我对Ruby on Rails很新,所以道歉,因为这可能是一个愚蠢的问题,在这里发布。
我创建了一个博客(使用generate scaffold)。我有一些页面可以交互和编辑博客帖子,从显示所有博客帖子(“索引”)的主页开始,查看特定博客帖子的区域(“显示”)和编辑博客帖子的区域( “编辑”),以及创建新博客帖子(“新”)的区域。 我还创建了评论(再次使用生成脚手架)以应用于相关的博客文章。评论和评论的部分形式显示在“显示”页面上。
我一直在努力使其工作得很好,但最近意识到我在“索引”页面上的删除按钮不起作用。我没有提示确认删除,而是直接进入相关帖子的“节目”。
以下是索引“index”页面的片段:
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= image_tag "work/thumbnails/#{post.image}", :alt => '' %></td>
<td><%= time_ago_in_words(post.created_at) %> ago (<%= post.created_at %>)</td>
<td class="zero-out"><%= link_to 'Show', post, :class => "submit-button" %></td>
<td class="zero-out"><%= link_to 'Edit', edit_post_path(post), :class => "submit-button" %></td>
<td class="zero-out"><%= link_to 'Destroy', post, confirm: 'Are you sure?', :method => :delete, :class => "submit-button" %></td>
</tr>
<% end %>
以下是来自与删除相关的posts_controller的代码片段:
def destroy
@post = Post.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to posts_url }
format.json { head :ok }
end
end
我还发现删除评论按钮(在每个评论旁边的“显示”页面上)已停止使用错误消息:
未知行动
找不到CommentsController
的动作'show'
作为参考,“删除评论”按钮的代码是:
<%= link_to 'Remove Comment', [comment.post, comment],
:confirm => 'Are you sure?',
:method => :delete %>
comments_controller中的代码片段是:
def destroy
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end
我完全不了解RoR的工作原理,以及这些文件如何完全相互作用以解决问题,因此非常感谢任何帮助。
答案 0 :(得分:0)
首先,您会错过destroy link方法调用中的箭头 纠正它。
<%= link_to 'Destroy', post, confirm: 'Are you sure?', :method => :delete, :class => "submit-button" %>
其次,你不必找到评论的帖子就可以删除它。只需这样做。
如果您想重定向回帖子,请在控制器中执行
<%= link_to 'Remove comment', comment, confirm: 'Are you sure?', :method => :delete %>
<_>在comment_controller 中
def destroy
@comment = Comment.find(params[:id])
@post = @comment.post
@comment.destroy
respond_to do |format|
format.html { redirect_to @post }
format.json { head :ok }
end
end
答案 1 :(得分:0)
我发现了问题 - 我已经定制了样式表,javascript文件等的链接,并且在这样做时,我遗漏了javascript文件的链接,用于支架创建的帖子和评论。
在包含这些文件的链接后,一切都恢复了。