Ruby on rails 4 Rails集合帮助。不了解它是如何工作的

Ruby on rails 4 Rails集合帮助。不了解它是如何工作的,ruby-on-rails-4,form-for,Ruby On Rails 4,Form For,我有大约3个模型,它们都相互关联 Class Invoice < ActiveRecord::Base belongs_to :shipperline, foreign_key: 'receiver_quantity' def shippedqty Shipperline.getshippqty(@customerid).to_a.split end 然后我有一个shipperline模型 Class Shipperline < Activerecor

我有大约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:NilClass的未定义方法“map”

有人能解释一下我做错了什么,或者请给我指出正确的方向吗?我对rails相当陌生


还有没有更好的方法来尝试获取一个包含这些不同结果的选择框,以便用户从中进行选择?

通过这种方法可以更轻松地实现这一点

我的发票\u 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 %>

现在,当它显示一个具有正确值的下拉集合并将每个记录的正确值插入数据库时。

为什么要拆分数组?以我之前尝试过的方式,我发现这是一个错误,并认为拆分它可能会有所帮助。请通读指南,您会非常非常非常迷路!