我有大约3个模型,彼此都有关系。
Class Invoice < ActiveRecord::Base
belongs_to :shipperline, foreign_key: 'receiver_quantity'
def shippedqty
Shipperline.getshippqty(@customerid).to_a.split
end
然后我有一个shipperline模型
Class Shipperline < Activerecord::Base
has_many :invoices
def self.getshippqty(customerid)
Shipperline.joins(:customerorderline, :shipper).select("cust_order_id").where(cust_order_id: customerid).order("shipped_qty").pluck(:shipped_qty).uniq
end
但是在我的表单中(这是在我的主视图中,因为此查询通常会为每张发票返回4到5个结果,这就是为什么我需要用户选择它真正属于哪一个。
所以我一直在尝试
<%= form_for :invoice do |f| %>
<td id="putcolor"><%= f.select :shippedqty, Shipperline.getshippqty(@customerid).to_a.split %> </td>
<% end %>
但它变空了。我也尝试过collection_select,这也不起作用。
<td id="putcolor"><%= f.collection_select :invoice_id, @shipqty, :id, :shippedqty %></td>
然后我得到nil的未定义方法'map':NilClass
有人可以解释我做错了什么或请指出我正确的方向吗?我对rails很新。
还有一种更好的方法来尝试获取一个包含这些不同结果的选择框供用户选择吗?
答案 0 :(得分:0)
通过这种方式让这项工作变得更加轻松。
我的Invoice_helper.rb
def options_for_invoices(customerid)
Invoice.shippedqty2(customerid)
end
def options_for_packlistid(customerid, shipqty)
Shipperline.packlist(customerid, shipqty)
end
然后在我的表格中我做了:
<%= form_for(@invoice) do |f| %>
<%= f.label :shippqty %>
<%= f.select :shippedqty, options_for_invoices(@invoice.customerorderid) %>
<br />
<%= f.label(:packlistid %>
<%= f.select :packlistid, options_for_packlistid(@invoice.customerorderid, @invoice.shippedqty) %>
<%= f.submit %>
<% end %>
现在,当它显示具有正确值的下拉集合时,并为数据库中的每条记录插入正确的值。