0

在我的 routes.rb 我有这个资源

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

update_multiple助手是update_multiple_home_screen_buttons

然后我决定删除资源,因为我只需要控制器中的update_multiple方法,所以我将 routes.rb 更改为

post "home_screen_buttons/update_multiple"

它创建助手home_screen_buttons_update_multiple而不是update_multiple_home_screen_buttons

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

:on => :collection 有不同的助手然后 :on => :member 是有道理的,但是有没有其他方法可以将 :as => :update_multiple_home_screen_buttons 添加到我的 post 方法中以获得相同的行为?

4

1 回答 1

1

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
于 2013-05-13T10:12:24.390 回答