Rails 4 - 如何为嵌套资源添加编辑 link

Rails 4 - how to add an edit link for a nested resource

我正在尝试找出嵌套路由。

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

项目

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 %>

当我尝试此编辑 link 时,我收到一条错误消息:

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。

<%= 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 中请求对资源的复数引用(尽管这对我来说没有意义),就像这样:

<%= 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

我看不出如何获取此信息并使用它来编写编辑 link。

谁能看出我做错了什么?

根据你的rake路线,我认为路径应该是edit_project_potential_use_path(@project, pu)

<%= link_to 'Edit', edit_project_potential_use_path(@project, pu) %>

你也必须指定父级:

edit_project_potential_use_path(@project, pu)