编辑已存在的复选框选项

时间:2012-06-21 20:38:25

标签: ruby-on-rails

我有User has_many Categories

这些类别表示为复选框。

我想要发生的是在他们的设置页面上,它应该显示所有已选中的复选框已经选中。

它还应该允许他们检查新的,或取消选中现有的更新他们的个人资料。

这是我在第一次选择类别时最初生成复选框的方式:

      <% @categories.each do |cat| %>
              <span class="three columns alpha">
          <label for="regularCheckbox">
        <%= check_box_tag "user[category_ids][]", cat.id, false %>
            <span class="gig-check"><%= cat.name %></span>
          </label>                  
        </span>
      <% end %>

思想?

2 个答案:

答案 0 :(得分:2)

check_box_tag的定义是:

check_box_tag(name, value = "1", checked = false, options = {})

因此,第三个参数是否选中了复选框。你总是将它作为'假'传递。相反,你应该有这样的东西:

<% @categories.each do |cat| %>
      <span class="three columns alpha">
      <label for="regularCheckbox">
        <%= check_box_tag "user[category_ids][]", cat.id, @user.categories.include?(cat) %>
        <span class="gig-check"><%= cat.name %></span>
      </label>                  
    </span>
  <% end %>

答案 1 :(得分:1)

我通常这样做:

<% @categories.each do |cat| %>
  <% checked = @user.categories.include?(cat) %>
  <span class="three columns alpha">
    <label for="regularCheckbox">
      <%= check_box_tag "user[category_ids][]", cat.id, checked %>
      <span class="gig-check"><%= cat.name %></span>
    </label>                  
  </span>
<% end if @categories %>