2016-02-25 31 views
1

使用Rails,不使用Javascript,我試圖讓開發人員選擇任何文本,以便通過我編寫的算法來操縱任何erb文件。該算法應該在視圖中接收指定的文本,無論它是從數據庫還是靜態erb文本返回,並根據其內部決定返回新文本。用戶只能看到網頁上的呈現文字(或html)。非CRUD Rails應用程序的正確佈局

該算法是編寫的,我知道如何調用API,因此這些事情執行的確切工作與此問題無關。我具體詢問如何構建我的Rails應用程序。我不知道在哪裏放置算法代碼(在模型或lib /?中),我不知道如何讓所有視圖訪問這個'方法'。

這裏是我的具體問題:

  1. 如果實際算法(所有的業務邏輯)進入模型,還是應該模型僅用於API調用?如果算法沒有進入模型,它應該去哪裏?
  2. 將Rails視圖助手是適當的方式公開一個算法方法到我的視圖,將包裝文本?例如,如果我有一個名爲'send_to_algorithm'的助手,我應該如何處理erb文本? <%= send_to_algorithm "My name is #{@person.name}" %>
  3. 如果對問題#2的回答是肯定的,那麼這個助手是否只能作爲視圖和模型之間的「中間人」呢?看來我的模型應該處理執行算法處理和API調用的'真正'工作。

我知道如何在Ruby中對此進行編碼,所以我不需要編程示例。我正在尋找Rails應用程序「結構」的幫助,以及我應該爲這個項目的每個部分使用哪些「模塊」。我可能會錯誤地使用模塊這個詞,因此爲了澄清,我詢問何時應該爲該項目的任何特定部分使用視圖助手,模型或控制器。

任何幫助或建議,你可以給非常感謝!

+0

這個意見是如何建立的?我正在解釋我目前對如何佈局非CRUD Rails應用程序的理解,並特別詢問每個點是否正確。這不是基於觀點的,因爲Rails有標準的約定,但我不瞭解如何去做。你們需要暫時解除權力...... – CaliforniaGirlCode92278

回答

2
  1. 它似乎不像你的算法有任何固有的連接到你的持久層(即你的模型),所以我建議要麼把它放到例如。 lib/my_algorithm.rb,或者許多Rails商店已經轉向,將其放到app下的新子目錄中,例如app/services/my_algorithm.rb
  2. 我不會建議將任何東西,除了演示邏輯到視圖助手。相反,你的控制器應該調用你的算法類並把結果放到你的視圖可以呈現的實例變量中。
  3. 視圖就是這樣 - 一個視圖。您的算法代表業務邏輯,但與您的數據庫沒有真正的聯繫,因此它不屬於模型。它可能是你的控制器上的一種方法,但更薄的控制器是更好的控制器。就像我上面提到的,把我的推薦放在一個單獨的,可測試的服務對象中。