0

我是 rails 3 的新手,按照 ruby​​ 站点中的指南,我构建了第一个博客应用程序。

但是在应用程序中,模型“评论”没有编辑/更新/删除操作。

然后我尝试添加它,但我失败了。

我不只是为模型“评论”生成模型,而是使用以下方法为模型“评论”创建脚手架:

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

为什么我修改它是在评论构建表单中,post url应该是“/posts/1/comments”来创建新的评论,否则post url将是“/comments”,它不会关联帖子和评论。

4

2 回答 2

1

你配置你的routes?你config/routes.rb应该包含

resources :comments

您还可以运行rake routes以查看基于您的资源配置的应用程序的可用 url。

编辑:

对于演示,您可以在 youtube 上尝试此视频。但是,您可以在网络上找到很多关于此的视频。

编辑:

因此,您似乎需要两种方式的评论资源。既可以作为帖子的嵌套资源,也可以作为顶级资源。所以你可以把两件事放在一起

resources :posts do
   resources :comments
end
resources :comments
于 2012-08-30T08:20:42.187 回答
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>
于 2012-08-30T09:07:41.557 回答