Rails:向单例资源添加路由

时间:2011-03-24 14:36:45

标签: ruby-on-rails ruby-on-rails-3 routing

所以,如果我有单身路线......

resource :shared

...我想要自定义动作名称而不是标准的CRUD名称,我还能做...

resource :shared do
  collection do
    get 'foo'
    get 'bar'
    match 'baz'
  end
end

...或者我可以不使用“收集”块并将这些路径直接传递给单身人士吗?

在这种情况下,我不想要任何标准的CRUD路线......

是否有更简单,更简洁的方法来设置仅针对共享资源的特定ajax相关操作的路由?我非常稀疏地使用这个控制器,大多数它存在,以便shared视图文件夹可以提供像我的页脚和我的菜单......

建议?

2 个答案:

答案 0 :(得分:2)

您可以使用match

例如,假设您有一个名为FooController的控制器和一个名为bar的方法,您可以执行以下操作:

match "/foo/bar/" => "foo#bar", :as => "foo_bar"

这样可以使用方法FooController

将任何请求(无论是GET还是POST)与bar匹配

如果您只需要一个特定的http动词,请将match替换为postget

答案 1 :(得分:0)

资源代码如下所示:

collection do
  post :create
end if parent_resource.actions.include?(:create)

new do
  get :new
end if parent_resource.actions.include?(:new)

member do
  get    :edit if parent_resource.actions.include?(:edit)
  get    :show if parent_resource.actions.include?(:show)
  put    :update if parent_resource.actions.include?(:update)
  delete :destroy if parent_resource.actions.include?(:destroy)
end

所以你基本上可以做同样的事情,但用你自己的名字。