【问题标题】:rails custom controller with nested resources: routes.rb带有嵌套资源的 rails 自定义控制器:routes.rb
【发布时间】:2012-08-23 10:18:53
【问题描述】:

我有一个用户控制器和用于索引、更新等的相关视图。项目规范发生了变化,现在我们有一个自定义的仪表板控制器和相关的索引页面,通过 localhost:3000/dashboard 访问

match 'dashboard' => 'dashboard#index', as: 'dashboard'

仪表板索引页面的行为类似于(旧)用户索引页面,因此我想我可以简单地重用用户控制器操作。 我怎样才能简单地将用户“嵌套”到仪表板中,以实现localhost:3000/dashboard/users/newlocalhost:3000/dashboard/users/1/edit 之类的路由? 请注意,Dashboard 控制器没有关联模型,它是自定义模型,只是根据查看 Rails 应用程序的人创建自定义主页。它将具有与用户无关的其他功能。

我试过了

match 'dashboard' => 'dashboard#index', as: 'dashboard' do
  resources :users do

    member do
     #more custom actions
    end

    collection do
     #more custom actions
    end

 end


end 

【问题讨论】:

    标签: ruby-on-rails model-view-controller routing controller


    【解决方案1】:

    命名空间应该这样做:

    namespace :dashboard do
        root to: "dashboard#index"
    
        resources :users do
        end
    end
    

    仪表板索引的路由应该是dashboard_root_path

    app
        controllers
             dashboard
                 dashboard_controller.rb
                 users_controller.rb
    

    【讨论】:

    • 我听从了您的建议,重新安排了控制器和视图的位置(视图/仪表板/用户/*)。问题是 Rails 抱怨 #:0x0000012af97cb8> 的 users_path 未定义。当我尝试使用表单创建新用户时会发生这种情况。违规行是
    • views/dashboard/user/* 可能是一个错字,但user 应该是复数。您需要将表单更改为simple_form_for([:dashboard, @user])
    猜你喜欢
    • 2017-01-10
    • 2013-06-17
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多