无法使用评论App编辑或查看帖子

时间:2012-09-17 20:44:48

标签: ruby-on-rails ruby ruby-on-rails-3

我构建了一个简单的Rails应用程序,其中包含一条/多条评论的帖子。

我想创建一个简单的帖子视图,允许我查看帖子和相关的评论。我希望每个评论都有链接 - 查看,编辑,删除。

但是每当我尝试修改下面的代码时,我都会遇到路由错误。帮助

的routes.rb

resources :posts do
   resources :comments
end

rake routes

 post_comments GET    /posts/:post_id/comments(.:format)          comments#index
                   POST   /posts/:post_id/comments(.:format)          comments#create
  new_post_comment GET    /posts/:post_id/comments/new(.:format)      comments#new
 edit_post_comment GET    /posts/:post_id/comments/:id/edit(.:format) comments#edit
 post_comment GET    /posts/:post_id/comments/:id(.:format)      comments#show
              PUT    /posts/:post_id/comments/:id(.:format)      comments#update
              DELETE /posts/:post_id/comments/:id(.:format)      comments#destroy

comments_controller.rb

def show
  @comment = Comment.find(params[:id])

 respond_to do |format|
  format.html
  format.json { render :json => @post }
 end
end

def edit
 @comment = Comment.find(params[:id])
end

评论\ show.html.erb

 <p>
   <b>Commenter:</b>
   <%= @comment.user_id %>
 </p>

 <p>
   <b>Comment:</b>
   <%= @comment.text %>
 </p>

 <%= link_to 'View Comment', comment_path(?) %> |
 <%= link_to 'Edit Comment', edit_comment_path(?) %> |
 <%= link_to 'Delete Comment', [@post, comment],
        :confirm => 'Are you sure?',
        :method => :delete %></p>

1 个答案:

答案 0 :(得分:0)

你看到了吗?

路由错误 没有路线匹配{:action =&gt;“show”,:controller =&gt;“comments”} 尝试运行rake路线以获取有关可用路线的更多信息。

我使用您提供的代码复制了您的项目,并且仅收到该路由错误,因为没有将id传递给路由帮助程序方法。因为这些是宁静的路线,所以View Comment的格式应该是/ comments /:id(。:format)。

我能够通过将id或comment对象传递给comment_path和edit_comment_path帮助器方法来解决此错误,如下所示:

<%= link_to 'View Comment', comment_path(2) %> |
<%= link_to 'Edit Comment', edit_comment_path(3) %> |
<%= link_to 'Delete Comment', [@post, comment],
    :confirm => 'Are you sure?',
    :method => :delete %></p>

显然,您希望使用正确的ID或注释对象填充它们,而不仅仅是一些随机ID。

希望这有帮助。

干杯!