2011-03-05 43 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