0

我有这个tripbuilder,我想为其分配类别。因此,我将模型设置为旅行可以在我的数据库的类别表中包含任何(或更多)类别。然而; 我不知道如何设置允许用户通过复选框选择类别的表单。由于在这种情况下 fields_for 听起来不是一个可靠的方法(因为我想用复选框查看所有类别并选择我想要的尽可能多的类别)。谁能帮我吗?

我试过这种形式:

<%= form_for @trip, :html => {:multipart => true} do |a| %> 
    <%= a.label :title, "Routetitel" %>
    <%= a.text_field :title %>

    <%= a.label :description, "Omschrijving" %>
    <%= a.text_area :description %>

    <%= a.fields_for :categories do |cat| %>
        <%= cat.check_box :name %>
    <% end %>

    <%= a.submit 'Verstuur' %>
<% end %>
4

3 回答 3

1

首先,您需要像这样设置行程和类别之间的关系:

class Trip < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

然后你可以像这样构建表单:

<%= form_for @trip, :html => {:multipart => true} do |a| %> 
    <%= a.label :title, "Routetitel" %>
    <%= a.text_field :title %>

    <%= a.label :description, "Omschrijving" %>
    <%= a.text_area :description %>

    <% Category.all.each do |cat| %>
        <%= check_box_tag "trip[category_ids][]", cat.id, @trip.catergory_ids.include?(cat.id)
    <% end %>

    <%= a.submit 'Verstuur' %>
<% end %>
于 2012-10-17T07:20:32.737 回答
0

是的,可以通过使用选择标签和选择标签multiple的属性来完成。

    <% = a.select :categories, Category.all.collect {|c| [c.name, c.id]}, :include_blank => true', :multiple => "multiple" %>
于 2012-10-17T06:22:52.480 回答
0

请按如下所述修改您的 fields_for 并检查!!!!

<%= a.fields_for "categories[]" do |cat| %>
    <%= cat.check_box :name %>
<% end %>
于 2012-10-17T06:48:37.610 回答