我有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 %>
思想?
答案 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 %>