Rails路由父ID名称和CanCan问题

时间:2013-05-09 21:22:49

标签: ruby-on-rails ruby routes cancan

我正在尝试使用简单的路线

/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>

1 个答案:

答案 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