我是rails 3的新手,按照ruby网站的指南,我构建了第一个博客应用程序。
但是在应用程序中,模型“Comment”没有编辑/更新/删除操作。
然后我尝试添加它,但我失败了。
我不是仅为模型“Comment”生成模型,而是使用以下方法为模型“Comment”创建脚手架:
rails generate scaffold Comment commenter:string body:text post:references
在post.show页面中,我将其修改为:
<% @post.comments.each do |comment| %>
<tr>
<td><%= comment.commenter %></td>
<td><%= comment.body %></td>
<td><%= link_to 'Edit', edit_comment_path(comment) %></td>
<td><%= link_to 'Destroy', comment, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
列出了它们,但是当我点击“修改”或“删除”链接时,它会尝试跳转到:
http://localhost:3000/comments/1
然后我会得到错误:
No route matches [GET] "/comments/3/edit" or
No route matches [DELETE] "/comments/3"
我现在不知道。
我可以学习任何开箱即用的演示吗?
更新
在routes.rb中:
resources :posts do
resources :comments
end
注意:以下内容由我自己手动提供。
rails生成的配置为:
resources :posts
resources :comments
为什么我修改它是在评论构建表单中,帖子网址应该是“/ posts / 1 / comments”用于创建新评论,否则帖子网址将是“/ comments”,它不会关联帖子和评论。
答案 0 :(得分:1)
您是否配置了routes
?您的config/routes.rb
应包含
resources :comments
您还可以运行rake routes
根据资源配置查看应用程序的可用网址。
修改强>
对于演示,您可以尝试this video on youtube。但是,您可以在网上找到很多有关此内容的视频。
修改强>
所以看来你需要两种方式来评论你的评论资源。两者都作为帖子和顶级资源的嵌套资源。所以你可以把两件事放在一起
resources :posts do
resources :comments
end
resources :comments
答案 1 :(得分:0)
由于您已嵌套资源,因此应使用:
edit_post_comment_path(@post, comment)
更清楚:
<td><%= link_to 'Edit', edit_post_comment_path(@post, comment) %></td>
<td><%= link_to 'Destroy', post_comment_path(@post, comment), confirm: 'Are you sure?', method: :delete %></td>