我对ruby on rails非常新,我正在按照教程设置一个简单的博客风格网站。我在文章上实现了标签,但现在我在尝试实现删除标签时遇到错误。我认为这是错误的来源。
def destroy
@tag = Tag.find(params[:id])
@tag.destroy
flash.notice = "Tag '#{@tag.name}' Deleted!"
redirect_to action: "index"
end
我认为这是@tag = Tag.find(params [:id])行导致以下错误:
无法找到标记为'id'=#<标签:: ActiveRecord_Relation:0x007fdd2c016ba0>
我坚持这个,因为我设法以这种方式删除文章,所以我不确定为什么这不起作用。
编辑: 这是视图文件。
<h1>All Tags</h1>
<ul id="tags">
<% @tag.each do |tag| %>
<li>
<%= link_to tag.name, tag_path(tag) %>
<%= link_to "delete", tag_path(@tag), method: :delete, data: {confirm: "Really delete the tag?"} %>
</li>
<% end %>
</ul>
答案 0 :(得分:1)
您需要在视图中的tag_path方法中传递标记变量而不是@tag变量。
<%= link_to "delete", tag_path(tag), method: :delete, data: {confirm: "Really delete the tag?"} %>
答案 1 :(得分:0)
将@tag
更改为传递数组的tag
而不是单个值..
<ul id="tags">
<% @tag.each do |tag| %>
<li>
<%= link_to tag.name, tag_path(tag) %>
<%= link_to "delete", tag_path(tag), method: :delete, data: {confirm: "Really delete the tag?"} %>
</li>
<% end %>
</ul>