初学者的问题。我有索引上的模式框列表供应商。我想为此供应商提供新的采购表单(以及过滤器@ 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>
我这样做undefined method "name" for nil:NilClass
不知道如果我需要定义@supplier in purchase#new action
由于得到零误差。
*编辑* 我想要做的就是创建通过http://localhost:3004/purchases/new?supplier_id=2
一种新的形式,我可以通过supplier_id设置Parameters: {"supplier_id"=>"2"}
但是当我提交抱怨supplier_id是无形式的控制台验证。
如何确保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
你能举出适当的控制器动作吗?你在哪里使用supplier_id来提取供应商等? :) –
这是什么:'params [:supplier_id => @ supplier.id]'?不应该只是':supplier_id => @ supplier.id'? –