2014-12-23 1 views
0

У меня есть около 3 моделей, которые все связаны друг с другом.Rails коллекция помощь. Не понимаю, как это работает

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> 

, но затем я получаю неопределенный метод «карты» для ноль: NilClass

Может кто-нибудь объяснить, что им делать неправильно или пожалуйста мне точку в правильном направлении? Я довольно новичок в рельсах.

Также есть ли лучший подход к попытке получить поле выбора с этими различными результатами в нем для пользователя?

+1

Почему вы разделили массив? – Humza

+0

В том, как я пытался раньше, я видел, что это была ошибка, и подумал, что это может помочь, если я его разлому. – Jakepens71

+0

Пожалуйста, пройдите через проводников, вы ужасно, ужасно потеряны! http://guides.rubyonrails.org/ – smathy

ответ

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 %> 

Теперь, когда он показывает падение вниз коллекций с правильными значениями и вставляет правильные значения в базу данных для каждый запись.