Rails 4 - 如何为嵌套资源

时间:2016-08-21 07:07:47

标签: ruby-on-rails path routes nested-routes

我正试图找出嵌套路线。

我有称为项目和潜在用途的模型。协会是:

项目

has_many :potential_uses
      accepts_nested_attributes_for :potential_uses, reject_if: :all_blank, allow_destroy: true

潜在用途

belongs_to :project
belongs_to :user

在我的项目展示中,我正试图遍历每个潜在用途。

<% @project.potential_uses.each do |pu| %>
      <div class="row">
            <p><%= pu.comment %></p>
            <strong><%= pu.user.formal_name %></strong>
              <%= link_to 'Edit', edit_project_potential_use_path(pu) %>

            <p style= 'border-bottom: solid; border-bottom-width: 1px'></p> 

      </div>    
    <% end %>

当我尝试使用此编辑链接时,出现错误消息:

No route matches {:action=>"edit", :controller=>"potential_uses", :id=>nil, :project_id=>#<PotentialUse id: 14, comment: "asdf", project_id: 17, created_at: "2016-08-19 01:36:49", updated_at: "2016-08-19 01:36:49", user_id: 1, private_comment: false>} missing required keys: [:id]

我尝试了几种不同版本的编辑链接。

<%= link_to 'Edit', edit_project_potential_use_path(potential_use) %>


<%= link_to 'Edit', edit_project_potential_use_path(project.potential_use) %>

我找不到合适的方式。

我的佣金路线,为编辑操作显示:

edit_project_potential_use GET       /projects/:project_id/potential_uses/:id/edit(.:format)     potential_uses#edit

在我看来,这看起来我需要在编辑链接中要求多次引用资源(尽管它对我来说没有意义),如下所示:

<%= link_to 'Edit', edit_projects_potential_uses_path(pu) %>

该公式给出了这个错误:

undefined method `edit_projects_potential_uses_path' for #<#<Class:0x007fd4b7431b18>:0x007fd4b7430678>
Did you mean?  edit_project_potential_use_path
               edit_project_potential_use_url

我无法看到如何获取此信息并使用它来编写编辑链接。

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:1)

根据您的佣金路线,我认为路径应为<%= link_to 'Edit', edit_project_potential_use_path(@project, pu) %>

{{1}}

答案 1 :(得分:1)

您还必须指定父级:

edit_project_potential_use_path(@project, pu)