1

データベースからフォームのチェックボックス値を取得するにはどうすればよいですか?フォームに既存のサブカテゴリ名を表示したいのですが、チェックボックスをオンにしてその特定のカテゴリ名を選択し、新しいカテゴリ名を作成しない場合、ライアンベイトのレールキャストを試しましたが、役に立ちませんでした。ここでのCategory has_many SubCategories実現SubCategory belongs_to Categoryはとです。ありがとうございます。

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

1 に答える 1

6

コメントの交換に基づいて、チェックボックスを使用して SubCategory オブジェクトを Category オブジェクトに割り当てたいようです。その場合、関連付けは、カテゴリが 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 %>

カテゴリ フォームが表示され、チェックボックスをオンにして割り当てまたは割り当て解除できるすべての sub_categories が一覧表示されます。

実際の割り当てを処理するために、この新しい関連付けとロジック (おそらくコントローラー内) 用の結合テーブル「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
于 2012-04-26T21:04:54.557 に答える