def new
signed_in_checker
@review = Review.new
@host = Host.find(params[:id])
end
def create
@review = Review.new(review_params)
@review.user_id = current_user[:id]
@review.host_id = @host
if @review.save
redirect_to @host
else
render 'new'
end
end
遗憾的是,我在新页面上有一个表单,即使引用@host
的所有内容都可以正常显示,但是当我单击提交时它会错误地显示视图中的所有内容,即使它显示正常。
评论中的NoMethodError创建显示 C:/Sites/aplciaition/app/views/reviews/new.html.erb其中第13行 提出:
undefined method `title' for nil:NilClass
Extracted source (around line #13):
<%= f.text_area :text %>
<br>
<%= "How would you rate " + @host.title + "'s support?" %>
<%= f.radio_button :support, "1 Star" %>
<%= f.label :support, "1 Star", :value => 1 %>
答案 0 :(得分:0)
然后您点击提交调用create
操作并尝试保存@review
这不会发生,并且在这种情况下操作呈现new
次查看@host
未分配 - &gt;碰撞
那么我怎么能这样做,所以我可以推@host 到创建功能?
发送params
@host
变量值
通知
....
<%= hidden_field_tag :host_id, @host.id %>
<%= f.submit "Submit my review for " + @host.title %>
.... 在控制器
def create
@host = Host.find(params[:host_id])
@review = Review.new(review_params)
@review.user_id = current_user[:id]
@review.host_id = @host.id
if @review.save
redirect_to @host
else
render 'new'
end
end