0

モデルプロデューサーと製品をセットアップしました。新製品を作りたいときは、リストからプロデューサーを選ぶことができます。コードは次のとおりです。

<%= select("producer", "producer_id", Producer.all.collect {|t| [ t.name, t.id ] }, {:prompt => 'Select producer'})%>  

正常に動作しますが、作成した製品を保存しようとすると、作成producer_idした検証が原因で空白にできないものが表示されます。列producer_idをProductテーブルに設定し、関連付けを作成しました。

これが私のコードです:

製品コントローラー

def new
@product = Product.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @product }
end 

def create
   @product = Product.new(params[:product])
end

製品モデル

belongs_to :producer

プロデューサーモデル

has_many :products

誰かが助けてくれることを願っています!

4

1 に答える 1

1

問題は、コントローラーでparams [:product]を参照しているのに、ビューでは「プロデューサー」を使用していることです。select( "producer" ..をselect( "product"に変更すると、正常に動作します。

def create
   @product = Product.new(params[:product])
end

<%= select("producer", "producer_id", Producer.all.collect {|t| [ t.name, t.id ] }, {:prompt => 'Select producer'})%>  
于 2013-02-12T12:49:14.320 に答える