我有一个应用程序(教程),其中包含文章和评论。一篇文章has_many评论。评论属于一篇文章。我在删除文章评论时遇到问题。以下是有问题的文件:
应用/视图/评论/ _comment.html.erb
<%= div_for comment do %>
<h3>
<%= comment.name %> <<%= comment.email %>> said:
<span class='actions'>
<%= link_to 'Delete', [@article, comment], confirm: 'Are you sure?', method: :delete %>
</span>
</h3>
<%= comment.body %>
<% end %>
CommentsController
before_filter :load_article
def create
@comment = @article.comments.new(params[:comment])
if @comment.save
redirect_to @article, :notice => 'Thanks for your comment'
else
redirect_to @article, :alert => 'Unable to add comment'
end
end
def destroy
@comment = @article.comments.find(params[:id])
@comment.destroy
redirect_to @article, :notice => 'Comment deleted'
end
private
def load_article
@article = Article.find(params[:article_id])
end
的routes.rb
resources :articles do
resources :comments
end
问题是当我在地址 localhost:3000 / articles / 1 时尝试删除评论。我没有被重定向到文章节目动作,而是在地址 localhost:3000 / articles / 1 / comments / 3 中收到此错误:
Unknown action
The action 'show' could not be found for CommentsController
任何帮助非常感谢, 谢谢, 麦克
答案 0 :(得分:1)
这里有两个基本选项,因为大多数浏览器中的链接只能发送GET请求。
第一个选项是将java脚本默认文件包含在页面中
<%= javascript_include_tag :defaults %> #this mocks a delete action by modifying the request automatically
第二个,更可取的是使用button_to。首先,在一个地方的链接和一个按钮之间存在逻辑分离。删除肯定是一个动作。此外,按钮后面没有蜘蛛,因此不会被意外调用。
<%= button_to 'delete', @comment, :method => :delete %>
=========编辑完整性======= 如果您担心链接和按钮看起来不一样,我们jquery/jquery_ui可以轻松解决所有链接和按钮的样式。