所以我試圖爲用戶創建一個表單來留下關於電影的評論,但Rails一直在向我拋出一個未定義的方法錯誤。我的應用程序允許用戶查看電影。所以我希望表單允許用戶在該電影的上下文中創建一個評論。我的代碼如下,任何幫助將不勝感激。我唯一的困惑是,我不知道是否我應該巢資源或我只是用指定的form_for
爲什麼在Rails中創建表單時,爲NilClass:Class獲取未定義的方法`model_name'?
我的路線文件中的錯誤值如下:
resources :users
resources :movies
resources :reviews
resources :sessions, only: [:new, :create, :destroy]
我有一個評論控制器,它看起來是這樣的:
class ReviewsController < ApplicationController
def create
movie_id = params[:review].delete(:movie_id)
@review = Review.new(params[:review])
@review.movie_id = movie_id
@review.save
redirect_to movie_path(@review.movie)
end
end
我的形式如下:
<h2>Leave a Review</h2>
<%= form_for(@review) do |f| %>
<%= f.hidden_field :movie_id %>
<div class="field">
<%= f.text_area :content, placeholder: "Write a new review..." %>
</div>
<%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>
我有三個型號:
用戶:
class User < ActiveRecord::Base
has_secure_password
has_many :reviews, dependent: :destroy
has_many :movies, through: :reviews
end
電影:
class Movie < ActiveRecord::Base
has_many :reviews
has_many :users, through: :reviews
end
評論:
class Review < ActiveRecord::Base
attr_accessible :content, :movie_id
belongs_to :user
belongs_to :anime
end
以下是錯誤:
NoMethodError in Movies#show
Showing /Users/david/Sites/Rails/Chirp/app/views/movies/show.html.erb where line #32 raised:
undefined method `model_name' for NilClass:Class
Extracted source (around line #32):
29:
30: <h2>Leave a Review</h2>
31:
32: <%= form_for(@review) do |f| %>
33: <%= f.hidden_field :movie_id %>
34: <div class="field">
35: <%= f.text_area :content, placeholder: "Write a new review..." %>
後加回對象中要顯示錯誤輸出 – allesklar 2012-08-01 14:37:38
我剛纔粘貼上面 – David 2012-08-01 14:45:33