如何推送@host变量以便在提交表单时能够正常工作?

时间:2013-12-05 08:16:33

标签: ruby-on-rails ruby

  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 %>

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