没有路线匹配[DELETE]" / tags"

时间:2017-06-12 19:58:35

标签: ruby-on-rails

已修改为包含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;

我觉得问题是基本的,我还没有完全掌握。如果有人能帮助我理解我错过的内容及其运作方式,我将非常感激。如果我还没有提供足够的信息,请告诉我。谢谢!

1 个答案:

答案 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?"} %>