我正在尝试使用简单的路线
/agenda_items/5/feed
为此,我有以下路线设置
resources :agenda_items do
member do
get "/feed", to: "comments#feed"
end
end
在我的每个控制器中,我使用CanCan来处理身份验证并且工作正常,但是在这一行动中我遇到了问题,我很确定这是一个问题naming generation. When I run
rake routes`,上面的路由是
feed_agenda_item /agenda_items/:id/feed(.:format) agenda_items/:id#feed
据我所知,CanCan期望:id
参数实际上是:agenda_item_id
,因此我的父资源没有加载。
有没有什么方法可以让我更改这个以便CanCan可以在我不必手动加载和授权资源的情况下工作,或者有没有办法让CanCan能够改变它在某些动作上寻找的东西? / p>
答案 0 :(得分:0)
问题是你的路线错了。您尝试为agenda items
创建路由到comments
控制器的成员操作。如果您想要从单个议程项目中提取所有通知,您应该执行以下操作:
resources :agenda_items do
resources :comments do
collection do
get :feed
end
end
end
现在,您应该在运行rake routes
时获得以下内容:
feed_agenda_item_comments /agenda_items/:agenda_item_id/feed(.:format) comments#feed