我仍在学习 ruby on rails 中的绳索,这个问题可能很简单,但它现在困扰了我一段时间 环境:rails 3.2,ubuntu 上的 ruby 1.9 我正在构建一个小型评论应用程序来学习 rails 上的 ruby.e 我有一个网页评论/new.erb 我保存新评论的地方。它将在顶部显示电影名称。
评论/new.erb 看起来像这样
<h3><%= @movie.name %></h3>
<%= form_for @review do |f| %>
<%= render "shared/error_messages", :target => @review %>
<%= f.hidden_field :movie_id %>
<%= f.label :rating, "Rate the movie" %>
<%= f.select :rating,['1','2','3','4'] %>
<%= f.label :review, "Your 140 character review" %>
<%= f.text_area :review %>
<%= f.submit "Fire", :disable_with => 'Submitting...' %>
<% end %>
我的 new 和 create 控制器方法是
def new
@movie=Movie.find(params[:movie])
@review=Review.new
end
def create
@user=current_user
@review=Review.create params[:review]
@review.user_id=@user.id
@review.movie_id=params[:movie_id]
@movie=Movie.find(params[:movie_id])
if @review.save
flash[:notice] = 'Movie was successfully created.'
redirect_to :controller => "movies",:action => "show",:id => @review.movie_id
else
redirect_to :action => "new", :movie => @movie
end
end
当我尝试在 new.erb 中显示验证错误消息时,我收到此错误
Couldn't find Movie without an ID
Rails.root: /home/Development/ohmyroots
Application Trace | Framework Trace | Full Trace
app/controllers/reviews_controller.rb:14:in `create'
我添加没有混合内容的电影的另一种形式工作正常。解决此问题的建议将不胜感激。谢谢。
我正在使用动态表单 gem 在视图中显示验证
更新:我的新创建方法
def create
@review=Review.create(params[:review])
@user=current_user
@review.user_id=@user.id
@review.movie_id=params[:movie_id]
@review.rating=params[:rating]
@review.review=params[:review]
if @review.save
flash[:notice] = 'Movie was successfully created.'
redirect_to :controller => "movies",:action => "show",:id => @review.movie_id
else
@movie=Movie.find(params[:movie_id])
render :action => "new",:movie => @movie
end
结尾