0

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

我想创建一个简单的帖子视图,让我可以查看帖子和相关评论。我希望每条评论都有链接——查看、编辑、删除。

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

路线.rb

resources :posts do
   resources :comments
end

耙路线

 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

评论控制器.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>
4

1 回答 1

0

你在看:

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

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

我可以通过将 id 或评论对象传递给 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。

希望这可以帮助。

干杯!

于 2012-09-17T22:09:17.253 回答