我构建了一个简单的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>
答案 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。
希望这有帮助。
干杯!