【问题标题】:Rails 3 non-resourceful namespaced routeRails 3 非资源化命名空间路由
【发布时间】:2013-10-20 12:40:08
【问题描述】:

我注意到了

namespace :admin do
  namespace :manage do
    get 'list'
  end
end

实际上成功调用了以下操作(对于/admin/manage/list):

class Admin::ManageController
  def list
    render :text => 'success'
  end
end

这有点直观(这就是我尝试它的原因),但http://guides.rubyonrails.org/routing.html 中的任何地方都没有涵盖它

有人可以确定它是标准的预期功能,在下一个版本之后不会停止工作吗?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    这并不出人意料,设计就是这样工作的。但是,更典型的做法是

    namespace :admin do
      resources :manage do
         collection do
           get 'list'
         end
      end
    end
    

    namespaceresources 之间的主要区别在于后者默认情况下为 CRUD 操作提供标准路由。他们都路由到Admin::ManageController

    他们也有类似的选择。请参阅 namespaceresources 的文档

    如果Manage 是可以在您的应用程序中创建和销毁的资源,则使用resources 更有意义。如果它只是为某些操作分隔路由的标识符,则使用namespace

    【讨论】:

    • 谢谢,您可能打算写“resource :manage”(单数),这样它就不会期望每个方法都有 id。也很奇怪,没有文档说明路由如何直接在命名空间内用于“get/post”。
    • 顺便说一句,像这样写“resources :manage do”,不会创建默认的 RESTful 动作吗?所以为了让它对我有用,我需要写:resource :manage, :only => [] do get 'list' end
    • 不确定我是否理解....我的方法不起作用吗?也许你可以用新的细节更新你的问题。
    • @KaplanIlya 将collection 添加到没有id 的路由中
    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多