如何从Rails 3中的复选框更新多个记录的属性?

| 我有一个属性可将页面添加到网站的导航中(它是一个布尔值),并且我希望能够一次从复选框中打开和关闭页面。我尝试遵循以下轨道: http://railscasts.com/episodes/52-update-through-checkboxes,但是我遇到了两个问题。 一种-我希望复选框显示\“ navbar \”选项的当前状态。 还有两个-我不确定如何更新导航栏字段。 这是我的控制器:
  def nav
    Section.update_all([:navbar => :params[:navbar]], :id =>params[:section_ids])
    flash[:success] = \"Sections were added to navbar\"
    redirect_to(admin_sections_path)
  end
和我的看法:
<%= form_tag nav_admin_sections_path, :method => :put do %>
  <ol id=\"section_list\" class=\"records_list\">
  <% @sections.each do |section| %>
    <li id=\"section_<%= section.id %>\">
    <table>
      <tr class=\"handle\">
        <td class=\"title link_icon directory_link\"><%= section.name %></td>
        <td class=\"option\"><%= check_box_tag \"section_ids[]\", section.id %></td>
        <td class=\"action\"><%= link_to \'Edit\', edit_admin_section_path(section), :class=>\"link_icon edit_link\"   %></td>
        <td class=\"action\">
          <% if section.has_bio == false %>
          <%= link_to \'Destroy\', admin_section_path(section), :confirm => \'Are you sure?\', :method => :delete, :class=>\"link_icon delete_link\"   %>
          <% end %>
        </td>
      </tr>
      </table>

    </li>
  <% end %>
  </ol>

  <ol>
    <li class=\"submit\">
      <%= submit_tag %>
    </li>
  </ol>
<% end %>
该表嵌套在列表项中,因为我正在做一些jquery-ui可排序的事情。 无论如何,我需要该复选框显示:navbar的当前状态,并且我需要能够更新它们。现在,如果我尝试更新它们,则会出现此错误:
    can\'t convert Symbol into Integer
app/controllers/admin/sections_controller.rb:95:in `[]\'
app/controllers/admin/sections_controller.rb:95:in `nav\'
在我的控制器的这一行上”
Section.update_all([:navbar => :params[:navbar]], :id =>params[:section_ids])
所以我想我没有正确地将check_box状态传递给我的控制器。     
已邀请:
         让复选框正确检查。只需将布尔值添加为第三个参数即可。
<td class=\"option\"><%= check_box_tag \"section_ids[]\", section.id, section.navbar %></td>
更新导航栏字段您必须设置导航栏处于打开和关闭状态的两个部分。
ids = [*params[:section_ids]] + [0] # makes sure it works when no navbars are selected
Section.update_all({:navbar => true}, {:id => ids})
Section.update_all({:navbar => false}, \"sections.id NOT IN (#{ ids.join(\',\') })\")
编辑 需要双引号而不是第二个update_all中的单引号。更新了上面的代码。 编辑2 将逗号括在引号s6中     

要回复问题请先登录注册