1

フォームのチェックボックスの値をデータベースから取得するにはどうすればよいですか?フォームに既存のサブカテゴリ名を持たせて、その特定のカテゴリ名を選択するチェックボックスをチェックし、新しいカテゴリ名を作成しないようにしたいときは、私はryan bateのrailscastを試しましたが、私には役に立たなかった。ここの実現はCategory has_many SubCategoriesSubCategory belongs_to Categoryです。ありがとう。レールでフォームのモデルオブジェクトを取得する方法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

+0

@mikedユーザーはサブカテゴリをチェックします。基本的にはチェックしているので、後でサブカテゴリを選択したユーザーを特定できるはずです – katie

+0

何をするのですか? SubCategoryX、SubCategoryYが既に割り当てられているCategoryAがあるとします。フォームをレンダリングします。フォームはCategoryAのフィールドだけで表示され、その子はSubCategoryXとSubCategoryYです。各サブカテゴリにはチェックボックスがあります。サブカテゴリのチェックボックス設定はどの属性ですか?すべての可能なサブカテゴリを親カテゴリのフォームごとに表示したくないのですか?サブカテゴリをチェック/チェック解除すると、チェックされたサブカテゴリを親に割り当て/割り当て解除しますか? – miked

答えて

6

コメントの交換に基づいて、チェックボックスを使用してサブカテゴリオブジェクトをカテゴリオブジェクトに割り当てたいと思われるようです。その場合、関連はカテゴリhas_and_belongs_to_many:sub_categoriesである必要があります。カテゴリフォームを表示し、チェックボックスをチェックして割り当てたり、割り当てられていないことができます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 throughだったら、どうしたらいいですか? – katie

+0

あなたの団体名が同じであれば、違いはないと思います。すなわちhas_many:sub_categories、:through =>:whitvers – miked

関連する問題