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)
我正在尝试找出嵌套路由。
我有称为项目和潜在用途的模型。这些协会是:
项目
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)