2011-11-22 18 views
0

初心者の質問。私はインデックス上のモーダルボックスリストサプライヤーを持っています。私はこのサプライヤー(と@ supplier.products)のための新しい購入フォームをレンダリングしたいので、何とかsupplier_idを渡す必要があります。フォームを使ってフォームにパラメータを渡す方法

モーダルウィンドウ

<% @suppliers.each do |supplier| %> 
    <li><%= link_to supplier.name, new_purchase_path(@supplier) %></li> 
<% end %> 

フォーム

<%= nested_form_for(@purchase) do |f| %> 
    <div class="field"> 
    <%= f.label :supplier_id, :class => "mandatory" %> 
    <%= @supplier.name %> 
    <%= collection_select(:purchase, :supplier_id, Supplier.all, :id, :name, :prompt => true) %> 
    </div> 

私はので、私は@supplier in purchase#new action

感謝を定義する必要がある場合はわからないundefined method "name" for nil:NilClass

を行うことではnilエラーが発生します。

*編集* 私は何をしようとしているが、私はそれがSUPPLIER_IDさゼロ文句フォームを送信するときしかしParameters: {"supplier_id"=>"2"}に設定されているSUPPLIER_IDコンソールから確認することができhttp://localhost:3004/purchases/new?supplier_id=2て新しいフォームを作成することです。

supplier_idが正しく設定されていることを確認するにはどうすればよいですか?

def new 
@supplier = Supplier.find(params[:supplier_id]) 
@purchase = current_user.purchases.new(params[:supplier_id => @supplier.id]) 
@products = @supplier.products 

@products.each do |product| 
    @purchase.purchase_items.build(:product_id => product.id) 
end 

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

コントローラーアクションの適切な部分を置くことはできますか? supplier_idを使用してサプライヤなどをどこから取り出すのですか? :) –

+0

これはなんですか? 'params [:supplier_id => @ supplier.id]'?それは単に ':supplier_id => @ supplier.id'ではありませんか? –

答えて

0

あなたは、同様の名前の変数が混在しており、混乱します。

@suppliers @supplier サプライヤーから

それらのそれぞれが来ていますか?

私の最高の推測では、最初のモーダルボックスは、このあるべきであるということである。

<% @suppliers.each do |supplier| %> 
    <li><%= link_to supplier.name, new_purchase_path(supplier) %></li> 
<% end %> 

しかし、あなたのエラーメッセージがサプライヤーがnil ...私はそれはあなたが埋めるために行うであるかについて思ってしまうこれであることを示しているようですあなたがにない起こる場合@suppliers

任意のサプライヤーを持ってい... Supplier.allもnilを返し、それがcollection_selectでひどく動作をする可能性があります(つまり、それが呼び出すしようとするでしょう:名前をサプライヤーにする場合がありますまだありません)。だから、あなたのビジネスロジックにふさわしい、collection-select ...やその他のものの周りにif Supplier.count > 1のようなものを置かなければならないかもしれません。

+0

こんにちはエリン、あなたの返事をありがとう。私の質問を、要求された適切なもので更新しましょう。しかし、私はDbにいくつかのサプライヤーがいることを確認することができますので、問題はそこから来ていません – Gaelle

関連する問題