0

我有一个Userhas_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 %>

想法?

4

2 回答 2

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 %>
于 2012-06-21T22:56:23.450 回答
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 %>
于 2012-06-21T23:10:53.437 回答