【问题标题】:Select checkbox pass array in ruby on rails在 ruby​​ on rails 中选择复选框传递数组
【发布时间】:2012-08-15 06:59:48
【问题描述】:

如何传递数组的值?选中的复选框。

在视图中:

= check_box_tag 'user_message_ids[]', user_message.id, false

= link_to "<button>Bulk Delete</button>".html_safe, profile_message_path(user_message), :id => 'user_message_ids', :confirm => "Are you sure?", :method => :delete

我可以将提交按钮放在这个区域的任何地方吗?

喜欢这个:

= form_tag checked_messages_path do
  = check_box_tag 'user_message_ids[]', user_message.id, false
--------objects---------------------------------------------
--------objects---------------------------------------------
--------objects---------------------------------------------
--------objects---------------------------------------------
= submit_tag "Delete Checked"

【问题讨论】:

    标签: ruby-on-rails ruby controller


    【解决方案1】:

    使用form_tag

    <% form_tag delete_mutiple_items_path do %>
      <table>
        <thead>
          <tr>
            <th></th>
          </tr>
        </thead>
        <tbody>
          <% @items.each do |item| %>
          <tr>
            <td><%= check_box_tag "items[]", item.id %></td>
          </tr>
          <% end %>
        </tbody>
      </table>
      <%= submit_tag "delete Checked" %>
    <% end %>
    

    它将一个 id 数组传递给控制器​​,例如 {"item_ids[]" => ["1", "2", "3"]}

    所以你可以用这些 id 做任何事情

    仅供参考:http://railscasts.com/episodes/165-edit-multiple?view=asciicast

    更新(一个小问题)

    从这里:http://railscasts.com/episodes/17-habtm-checkboxes?view=asciicast

    我们的更新方法还有一个小问题。 如果我们取消选中所有复选框以从所有类别中删除产品,则更新将失败以删除该产品所在的任何类别。这是因为 HTML 表单上的复选框不会返回其值如果未选中,则产品的参数哈希中不会出现category_ids,这意味着category_ids 不会更新。

    要解决这个问题我们必须修改我们的产品控制器,将category_ids 参数设置为一个空数组,如果它没有传递给更新操作。我们可以使用Ruby's ||= 操作符来做到这一点,并在更新操作的顶部添加以下类似内容。

    params[:product][:category_ids] ||= []

    这将确保如果未选中任何复选框,则产品会正确更新,使其不属于任何类别。

    【讨论】:

    • Thnx,我想这可能对我有帮助。上帝保佑
    • 对选择和取消选择所有复选框的建议?
    • 我在这里看到一个问题,如果没有选择check_box,则更新不会修改实体,因为不会发送array param。跨度>
    【解决方案2】:

    您需要在表单标签周围添加按钮标签。您不能使用link_to 提交输入标签数据。

    【讨论】:

    • 但是我需要将按钮放在对象的顶部并且它不起作用......还有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多