为什么集合上的资源有不同的路由助手,而不是常规发布



在我的路由。我有这个资源

resources :home_screen_buttons do
    post :update_multiple, :on => :collection
end

update_multiple helper is update_multiple_home_screen_buttons

然后我决定删除资源,因为我只需要控制器中的update_multiple方法,所以我改变了路由。rb

post "home_screen_buttons/update_multiple"

它创建helper home_screen_buttons_update_multiple而不是update_multiple_home_screen_buttons

为什么它有不同的路由助手名称?

这是有意义的:on =>:收集有不同的助手然后:on =>:成员,但是有没有其他的方式然后添加:as =>:update_multiple_home_screen_buttons到我的帖子方法相同的行为?

Rails就是这样做的。当使用match时,它将URI映射到操作并创建相应的助手路径controller_action_path
但是当它被用作集合时,它就变成了该资源的RESTful操作,Rails为它提供了一个与集合相关的逻辑名称。这里引用一个例子:

resources :photos do
  collection do
    get 'search'
  end
end

生成search_photos_path

你可以这样做:

resources :home_screen_buttons, :only => [:update_multiple] do
    post :update_multiple, :on => :collection
end

最新更新