2016-08-02 46 views
0

我是編程新手,我有一個問題涉及到在軌道中使用ruby製作窗體。我正在創建一個數據庫來存儲產品的單位。這些單元在創建時最初位於存儲處。該位置存儲在單元模型列中。然後我有一個模型商店和一個模型緩解。如何使用複選框來修改模型中每個對象的值使用嵌套的形式

class Unit < ActiveRecord::Base 
    belongs_to :store 
    belongs_to :remission 
    attr_accessor :into_remission 
end 

class Remission < ActiveRecord::Base 
    belongs_to :store 
    has_many :units 
    accepts_nested_attributes_for :units 
end 

class Store < ActiveRecord::Base 
    has_many :units 
    has_many :remissions 
end 

存儲has_many:緩解和緩解has_many:單位。這個想法是,當我把一些單位出售給商店時,我必須創造一種緩解。這種減免是我給商店的產品清單,因此我們都可以參考商店中的哪些產品。因此,我有一個表單來創建一個緩解,您可以在其中選擇將更改緩解的store_id(引用)的商店。我也想從同樣的形式中選擇參與這個新緩解的單位,從每個單位改變remission_id(參考)。爲此,我在單元模型中創建了一個attar_accessor:into_remissions,這樣我就可以在每個單元中將其更改爲true,最終在複選框中獲得緩解。我有很多問題使這項工作,這裏是我的形式代碼:

<div class="row"> 
    <div class="col-md-6 col-md-offset-3"> 
    <%= form_for(@remission) do |f| %> 
     <%= render 'shared/error_messages_remissions' %> 
#Here you select the store that would own the remission and the products 
     <div class="field"> 
     <%= f.label :store_id, "Producto" %> <br/> 
     <%= f.collection_select :store_id, @stores.order(:name), :id, :name, prompt: "Select Store" %> 
     </div> 
#Here its a dynamic table that display all the products in storage 
     <table id="products" class="table table-striped table-bordered" cellspacing="0" width="100%"> 
      <thead> 
      <tr> 
       <th>Product Name</th> 
       <th>Remission</th> 
      </tr> 
      </thead> 
      <tbody> 
     #HERE I WANT TO MAKE A CHECK_BOX THAT CHANGES THE INTO_REMISSION VALUE FROM EACH UNIT. SO IT MARKS THE UNITS THAT WOULD TAKE PART IN THE REMISSION 
      <%= f.fields_for :units do |ff| %> 
      <% @units.each do |unit| %> 
       <% unless unit.sold %> 
       <tr> 
        <td><%= unit.product.name %></td> 
        <td> 
         <%= ff.label :into_remission, "Nombre de tu Marca:" %> 
         <%= ff.check_box :into_remission%> 
        </td> 
       </tr> 
       <% end %> 
      <% end %> 
      <% end %> 
      </tbody> 
     </table> 
     <%= f.submit "Submit", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 

不用說,他check_box它現在顯示或工作。 我不知道如何使這項工作和任何建議將受到歡迎,因爲我是新的rails和編程。由於

回答

1

嘗試改變這一點:

<%= f.fields_for :units do |ff| %> 
    <% @units.each do |unit| %> 
    <% unless unit.sold %> 
     <tr> 
     <td><%= unit.product.name %></td> 
     <td> 
      <%= ff.label :into_remission, "Nombre de tu Marca:" %> 
      <%= ff.check_box :into_remission%> 
     </td> 
     </tr> 
     <% end %> 
    <% end %> 
<% end %> 

到這一點:

<% @units.each do |unit| %> 
    <%= f.fields_for :units, unit do |ff| %> 
    <% unless unit.sold %> 
     <tr> 
     <td><%= unit.product.name %></td> 
     <td> 
      <%= ff.label :into_remission, "Nombre de tu Marca:" %> 
      <%= ff.check_box :into_remission%> 
     </td> 
     </tr> 
     <% end %> 
    <% end %> 
<% end %> 

我覺得你應該先遍歷單位,並分別通過各單位進入該領域。這應該解決顯示問題。

相關問題