如何为深层嵌套记录路由到新操作?

时间:2011-07-25 10:54:09

标签: ruby-on-rails routes nested record

我有一个场地,评论和评论的表格,其中一个场地有很多评论,每个评论都有很多评论。

目前,评论显示为场馆show.html.erb的部分内容,并在每个部分的底部添加了“添加评论”链接。

如何获取该链接以转到新的评论操作?

到目前为止我的代码:

路由

Go::Application.routes.draw do

  resources :venues do
    resources :reviews
  end

  resources :reviews do
    resources :comments
  end
end

评论控制器

class CommentsController < ApplicationController

  def new
    @review = Review.find(params[:review_id])
    @comment = @review.comments.build
  end

  def create
    @review = Review.find(params[:review_id])
    @comment = current_user.comments.create!(params[:comment])
    @comment.review = @review
    if @comment.save
      flash[:notice] = 'Comment added'
      redirect_to comments_path
    else
      render :action => :new
    end
  end
end

_review.html.erb

<div class="review">    
  <div class="review_content">
    <h2 class="review_partial_title"><%= review.title %></h2>        
    <p class="review_body"><%= review.body %></p>
  </div>

  <div class="clearall"></div>

  <div class="review_options">    
    <div class="review_partial_option">
      <%= link_to 'add comment', review_comments_path(review) %>
    </div>
  </div>
</div>

<%= link_to 'add comment', review_comments_path(review) %>将我带到评论索引页面(/ review / 168 / comments),并仅显示为该特定评论撰写的评论。

我想用

<%= link_to 'add comment', new_review_comments_path(review) %>

会起作用,但它会在场地中给我一个NoMethodError#show#undeited method`new_review_comments_path'for#&lt;#:0x5878e18&gt;错误。

感谢任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:2)

添加新评论的链接应为:

<%= link_to 'add comment', new_review_comment_path(review) %>