2014-03-19 38 views
0

我想知道什麼是Rails Way ™來構建「主觀」視圖,也就是說,根據提供的參數來改變輸出的視圖。在Rails中創建主觀視圖的好方法是什麼?

例如,請考慮以下做作情況:

用戶請求在博客應用一個article。在請求中,她發送參數time_zone=(-)1,表示她的時區爲-1。然後,該應用程序應該採用該參數,並在輸出中返回該文章以及該文章的創建時間 - 將轉換爲其時區

此服務器端處理方法的基本原理是,更改客戶端視圖很容易,尤其是在通過暴露的(移動)api訪問rails應用程序時。 (請注意,用客戶端腳本等處理前面提到的情況是沒有問題的,但我想避免這種情況。)

不知何故,我覺得這很容易屬於model,如果不是因爲params在那裏沒有的話。我想這是有原因的。從我的角度來看,Controller絕對不是堅持這一點的地方。

問題是:我應該把這個邏輯放在view

+0

看看[這個問題](http://stackoverflow.com/questions/13276001/rails-time-zone-from-url-params) – Slicedpan

+0

謝謝@Slicedpan,我感謝你的幫助。不幸的是,我對時區本身並不是很感興趣。這只是我的例子。這可能是任何事情,真的。問題在於「何處」而不是「如何」。 – conciliator

+0

正在寫答案atm – Slicedpan

回答

1

這個邏輯可能最適合你的控制器的子類。這個子類可以定義一個過濾器方法來設置適當的實例變量,然後在視圖中引用它。我將一個問題鏈接到了你的時區示例中(儘管沒有數字時區偏移量,但這個想法是相同的)。另一個例子可能是基於URL參數的另一個UI。在這種情況下,我可能會做這樣的事情:

class ApplicationController 
    before_filter :set_ui 
    private 
    def set_ui 
     if params[:ui] == 'blah' 
     @ui = 'blah' 
     else 
     @ui = 'thing' 
     end 
     true 
    end 
end 

那麼在你看來,你可以有這樣的事情:

<%= render :partial => @ui %> 

然後您創建爲ApplicationController子類的任何控制器都具有此功能

+0

不錯!謝謝 - 我沒有這樣想過。 :) – conciliator

相關問題