2011-12-14 10 views
0

私のシナリオ:映画のレビュー、レビューはコメントあり。Rails3ルーティングエラー

作品のモデル:

has_many :reviews 

レビューモデル:

has_many :comments 
belongs_to :movie 

コメントモデル:

belongs_to :review 

ルート:

resources :movies do 
    resources :reviews do 
    resources :comments 
    end 
end 
件の

コメントコントローラ:

def create 
    @movie = Movie.find(params[:movie_id]) 
    @review = Review.where(:movie_id => @movie.id) 
    @comment = @review.comments.create(params[:comment]) // Line 5 
    redirect_to movie_path(@movie) 
end 

コメントビュー:私はあり得る

<%= form_for([@movie, r, r.comments.build]) do |f| %> 
    <div class="field"> 
    <%= f.text_area :body %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Submit" %> 
    </div> 
<% end %> 

エラー:

NoMethodError (undefined method `comments' for #<ActiveRecord::Relation:0x007ff5c5870010>): 
app/controllers/comments_controller.rb:5:in `create' 

誰かが私が間違ってやっているものを私に教えてくださいことはできますか?事前に

おかげ..

答えて

2

Review.whereは何がしたいことはnilケースを処理するようにしてくださいインスタンス

@review = Review.where(:movie_id => @movie.id).first 

または

@review = Review.find_by_movie_id(@movie.id) 

で、レビューのリストを返します。

+0

(私はちょうど別の質問のための答えを受け入れ、それは私に4minsを待つように求める).. 4後にそれを受け入れる..ありがとう – Ari53nN3o