1

我要如何從數據庫形式複選框值?我想要的形式把現有的子類別名稱,當我選中該複選框以選擇特定類別的名稱,而不是創建一個新的one.I試圖瑞安大怒的railscast但對我沒有任何幫助。這裏是赫志和Category has_many SubCategoriesSubCategory belongs_to Category。謝謝。如何使用rails check_box在窗體中獲取模型對象?

<%= form_for @category ,:url=>{:action =>"create"} do |f| %> 
<%=f.text_field :category_name %> 
<%= f.fields_for :sub_categories do |s| %> 
<% @category.sub_categories.each do |sub|%> 
<%=s.check_box "name",{},sub.id %> <!--need help here--> 
<%end%> 
<%end%> 
<%=f.submit "submit"%> 
<%end%> 
+0

我想我失去了一些東西:你是渲染類別的所有子類別在您看來有啥將複選框的目的是什麼? – miked 2012-04-26 20:01:25

+0

@miked用戶將檢查一個子類別,主要通過檢查,他的選擇,所以以後我們應該能夠告訴挑什麼用戶,其子類別 – katie 2012-04-26 20:11:06

+0

右鍵並選擇它做什麼?比方說,你有CategoryA已經有SubCategoryX,SubCategoryY分配給它。您呈現表單。該表單顯示的只有CategoryA的字段,它是子類SubCategoryX和SubCategoryY。每個子類別都有一個複選框 - SubCategory上的複選框設置屬性是什麼?你確定你不想爲每個父類別表單顯示所有可能的子類別嗎?通過檢查/取消選中子類別,可以將選中的一個分配給/取消分配給父母。 – miked 2012-04-26 20:29:17

回答

6

基於註釋中的交換,看來要使用複選框子類別對象分配給類別的對象。如果是這樣的話,你的關聯應該是一個類別has_and_belongs_to_many:sub_categories。然後,你的形式看起來是這樣的:

<%= form_for @category ,:url=>{:action =>"create"} do |f| %> 
 <%=f.text_field :category_name %> 
<% SubCategories.each do |sc| %> 
    <div> 
     <%= check_box_tag :sub_category_ids, sub_category_id, @category.sub_categories.include?(sc), :name => 'category[sub_category_ids][]' -%> 
     <%= label_tag :sub_category_ids, sc.name -%> 
    </div> 
    <% end -%> 
<% end %> 

它會顯示一個類別的形式,然後列出所有可以通過檢查複選框被分配或未分配的 - 行業標準的。

你還需要一個連接表「categories_sub_categories」這個新的聯想和邏輯(可能在你的控制器)來處理實際的分配。

您category_controller.rb例如

def create 
    @category = Category.find(params[:id]) 
    #use the checked sub_category_ids from the form to find and assign the sub_categories. 
    assigned_sub_categories = SubCategory.find(params[:category][:sub_category_ids]) rescue [] 
    @category.sub_categories = assigned_sub_categories 
    if @category.save 
     … 
    else 
     … 
    end 
end 
+0

謝謝。如果我有has_many,我該怎麼辦? – katie 2012-04-26 22:04:59

+0

我不認爲它會有所作爲,只要你的公會名稱保持不變。即has_many:sub_categories,:through =>:whatevers – miked 2012-04-27 00:52:46

相關問題