【发布时间】:2016-08-14 04:57:45
【问题描述】:
我目前正在尝试删除评论,就像在我的应用程序中删除帖子一样。但是,由于某种原因,完全相同的代码似乎不适用于我的 cmets 并返回以下错误:
没有路线匹配 [DELETE] "/cmets"
def destroy
@post = @comment.post
@comment.destroy
respond_to do |format|
format.html { redirect_to @post, notice: 'Comment was successfully destroyed.' }
format.json { head :no_content }
end
end
这是我的模型的样子:
class Comment < ApplicationRecord
belongs_to :post
belongs_to :user
end
这是我的路线的样子:
Rails.application.routes.draw do
resources :posts
resources :users
resources :comments, only: [:create, :destroy]
#signup and register workflow
get '/signup' => 'users#new'
get '/login' => 'sessions#new'
post '/login' => 'sessions#create'
delete '/logout' => 'sessions#destroy'
end
这是我的链接在我看来的样子(Slim):
- @comments.each do |comment|
.comment-container.level-0
p
a href="/users/#{comment.user_id}" = comment.user.first_name
| :
= comment.comment
- if comment.user == current_user
.icon-delete
= link_to "Delete", comment, method: :delete, data: { confirm: 'Are you sure?' }
end
hr
h3 Write a new comment
= bootstrap_form_for(@comment) do |c|
.field
= c.text_field :comment
.field
= c.hidden_field :user_id, :value => current_user.id
= c.hidden_field :post_id, :value => @post.id
.actions
= c.submit
【问题讨论】:
-
rake routes | grep comments命令的输出是什么? -
cmets POST /cmets(.:format) cmets#create comment DELETE /cmets/:id(.:format) cmets#destroy
-
@patrick 你能把代码贴在你的 routes.rb 文件中吗?
-
如果您只有
create和destroy操作,如何渲染view以创建新评论?可能在posts/new.html.erb里面。那么comment是一个嵌套资源,实际上范围为posts。没有post,comment就无法存在。请参阅blog.8thcolor.com/en/2011/08/… 了解更多信息
标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5