提问人:tkhobbes 提问时间:12/6/2021 最后编辑:tkhobbes 更新时间:12/10/2021 访问量:66
Rails 嵌套路由:显示父资源时,删除操作不适用于嵌套资源
Rails Nested Route: Delete action doesn't work for nested resource when displaying parent resource
问:
我有一个包含人和昵称的数据库,昵称是人们的嵌套资源。
除了一件事外,一切都很好: 我在人们的“显示”页面上显示了昵称列表 - 在他们旁边,我有一个小链接,上面写着“删除”。但是,我无法删除它们 - 我收到如下错误:
Couldn't find Person with 'id'=44
def load_person
@person = Person.find(params[:person_id])
end
load_person方法在nicknames_controller中定义为
before_action :load_person
def load_person
@person = Person.find(params[:person_id])
end
下面是 nicknames_controller.rb 中的 destroy 方法:
def destroy
@nickname.destroy
respond_to do |format|
format.html { redirect_to @person, notice: "Nickname was successfully destroyed." }
format.json { head :no_content }
end
end
以下是 views/persons/show.html.erb 的视图片段:
<% @person.nicknames.each do |aka| %>
<li>
<%= link_to nickname.display_name, edit_person_nickname_path(@person, aka) %>
<%= link_to '', person_nickname_path(aka), method: :delete, data: { confirm: 'Are you sure?' }, class: "far fa-trash-alt text-error", title: "Remove" %>
</li>
<% end %>
所以“删除”的路线是这样的
http://127.0.0.1:3000/persons/44/nicknames/15
当我显示昵称(show 方法)并从那里删除(与上面相同的路线)时,一切正常。
我忽略了什么?
答:
0赞
tkhobbes
12/10/2021
#1
好的 - 所以很简单,因为它是愚蠢的。删除链接的路径错误 - 应该是
<%= link_to '', person_nickname_path(@person, aka) .... %>
但我有
..person_nickname_path(aka) ...
评论