已修改为包含config / routes.rb文件。
我正在使用Jumpstartlab Blogger 2教程,并且我在尝试从标记列表中删除标记时遇到了麻烦。这是我的第一个Rails项目,我仍然试图围绕MVC和路由。
这是我的代码视图中的代码:
<h1>All Tags</h1>
<ul id="tags">
<% @tags.each do |tag| %>
<li>
<%= link_to tag.name, tag_path(tag), class: 'tag_name' %>
<%= link_to "Delete", tags_path(@tag), method: :delete, data: {confirm: "Really delete the tag?"} %>
</li>
<% end %>
</ul>
来自我的Tags控制器的代码:
class TagsController < ApplicationController
def show
@tag = Tag.find(params[:id])
end
def index
@tags = Tag.all
end
def destroy
@tag = Tag.find(params[:id])
@tag.destroy
end
end
和config.routes.rb:
Blogger::Application.routes.draw do
root to: 'articles#index'
resources :articles do
resources :comments
end
resources :tags
end
我得到的错误是没有路线匹配[DELETE]&#34; / tags&#34; 。
我觉得问题是基本的,我还没有完全掌握。如果有人能帮助我理解我错过的内容及其运作方式,我将非常感激。如果我还没有提供足够的信息,请告诉我。谢谢!
答案 0 :(得分:1)
这是因为DELETE路由基于资源的实例(仅1个标记),而不是集合(标记组)。
所以你必须改变这一行:
<%= link_to "Delete", tags_path(@tag), method: :delete, data: {confirm: "Really delete the tag?"} %>
使用tag_path(tag)
:
<%= link_to "Delete", tag_path(tag), method: :delete, data: {confirm: "Really delete the tag?"} %>