【问题标题】:Rails 3.2 routes: incorrectly routing parent resource to child resource controller in nested resourcesRails 3.2 路由:错误地将父资源路由到嵌套资源中的子资源控制器
【发布时间】:2014-08-15 00:52:09
【问题描述】:

我完全被难住了——查看了所有嵌套资源问题,但找不到答案。

有嵌套资源,我试图通过 new_user_path(父资源)获取一个 link_to 以显示新用户页面,但 rails 想要路由到子资源 (simple_products_configs) 控制器而不是父资源控制器。

有人知道我做错了什么以及如何解决吗?会不会是视图文件中带有 simple_form 的东西?

错误信息:

Routing Error

No route matches {:controller=>"simple_product_configs", :user_id=>#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil, authentication_token: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, t_and_c: nil, deleted_at: nil, from_social_network: false>}

routes.rb:

resources :users do

  resources :simple_product_configs

end

用户/index.html.erb:

<div class="row-fluid">
  <h1>New <%= user_type_name(current_user) %></h1>
</div>
<div class="row-fluid">
  <span class="pull-right required-label">Required Fields <abbr title="required">*</abbr></span>
  <div class="span12">
    <%= simple_form_for(@user, :defaults => {input_html: { :class => 'span4' }}, :html => {:class => 'form-horizontal'}) do |f| %>

      <%= error_messages_helper(@user,"Could not register account") %>

      <%= render('form', f: f) %>

      <div class="control-group">
        <div class="controls">
            <%= f.submit "Create #{user_type_name(current_user)}", :class => 'btn' %>
            <%= link_to 'Cancel', dashboard_path, :class => "btn" %>
        </div>
      </div>
    <% end %>
  </div>
</div>

用户/_form.html.erb:

<%= f.input :first_name, :label => "First Name:" %>
<%= f.input :last_name, :label => "Last Name:" %>    
<%= f.input :email, :label => "Email:" %>        
<%= link_to 'Product Configs', user_simple_product_configs_path(f.object) %>

路线:

    user_simple_product_configs GET    /users/:user_id/simple_product_configs(.:format)          simple_product_configs#index
                                POST   /users/:user_id/simple_product_configs(.:format)          simple_product_configs#create  
 new_user_simple_product_config GET    /users/:user_id/simple_product_configs/new(.:format)      simple_product_configs#new
edit_user_simple_product_config GET    /users/:user_id/simple_product_configs/:id/edit(.:format) simple_product_configs#edit
     user_simple_product_config GET    /users/:user_id/simple_product_configs/:id(.:format)      simple_product_configs#show
                                PUT    /users/:user_id/simple_product_configs/:id(.:format)      simple_product_configs#update
                                DELETE /users/:user_id/simple_product_configs/:id(.:format)      simple_product_configs#destroy
                          users GET    /users(.:format)                                          users#index
                                POST   /users(.:format)                                          users#create
                       new_user GET    /users/new(.:format)                                      users#new
                      edit_user GET    /users/:id/edit(.:format)                                 users#edit
                           user GET    /users/:id(.:format)                                      users#show
                                PUT    /users/:id(.:format)                                      users#update
                                DELETE /users/:id(.:format)                                      users#destroy

【问题讨论】:

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


    【解决方案1】:

    检查 Users 控制器 是否正确设置,new controller 操作和其他 REST 控制器操作是否正确设置..

    【讨论】:

    • 谢谢!发现问题:错误与链接地址无关。由于 _form 部分中的帮助程序 user_simple_product_configs_path(f.object),我跟踪了路由错误。对于父资源的新(空)表单,我应该如何正确设置参数?
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多