2011-03-05 36 views
0

我的應用程序圍繞一個事件,特別是事件的ID。每當用戶導航到站點的不同部分(控制器)時,我需要能夠攜帶該事件的ID。Rails 3將模型ID附加到每個鏈接

我猜在URL中包含事件的ID是用戶打開多個瀏覽器窗口的首選方法。

我不想手動追加事件的ID到每個鏈接。有沒有可以幫助我做到這一點的輔助方法?

感謝

回答

2

您需要在您的路徑文件中創建一個嵌套資源,這會在您的路徑的開頭添加諸如「/ event /#eventid」之類的內容。

的routes.rb

resources :events do 
    # Other controllers routes go here 
end 

controller_whatever.rb

def index 
    @whatever = Event.find(params[:event_id]).whatever.all 
end 

... 

顯然,這將是最好的過濾器之前,使用一個:你可以再從你的控制器與params[:event_id]

例如訪問此,但你明白了。

0

你應該存儲在會話數據:

session[:event_id] = event_id 

然後,您將能夠訪問整個用戶會話。

UPDATE

你可能想看看nested resources

+0

由於用戶可以管理多個事件,所以恐怕他們會嘗試在瀏覽器中打開2個標籤頁編輯2個不同的事件。如果我使用會話變量,那麼這將會擾亂2個選項卡之間的數據完整性。 – Mike 2011-03-05 02:49:52

0

我推薦使用thomasfedb的解決方案。如果由於任何原因而無法完成,可以通過覆蓋url_for方法來完成,如question