【问题标题】:How to use check_box_tag to pass it to the params hash in Rails?如何使用 check_box_tag 将其传递给 Rails 中的 params 哈希?
【发布时间】:2016-12-31 01:35:21
【问题描述】:

所以我正在遍历一系列电影角色,每个角色都有一个复选框。我希望这样当我点击“选择我的演员”按钮时,我被重定向到teams_path(我的控制器中的索引方法),以便能够获取我在参数哈希中的数组中选择的字符的ID .

代码如下:

  -@chars.each do |i|
   =image_tag(i.image)
   %br
   First Name:
   =i.f_name
   %br
   Last Name:
   =i.l_name
   %br
   Show :
   =i.show
   %br
   =check_box_tag 'char_ids[]', i.id
   %hr

= link_to "Select My Cast", teams_path, :method => :get

我在控制器的 index 方法中放置了一个 binding.pry,而 params 没有 char_ids 数组或任何相关信息。谢谢您的帮助;我意识到这是一个众所周知的问题。

【问题讨论】:

    标签: ruby-on-rails checkbox input params


    【解决方案1】:

    如果您的控制器没有从您的代码获取参数和 sn-p;最有可能的是:

    1. 您忘记在页面上添加表单标签
    2. 单击该link_to 锚链接而不提交您的表单。

    因此,请确保您已设置 form_forform_tag,并确保使用某种“按钮”而不是简单的锚标记 (link_to) 提交表单。

    PS。您无需将method: :get 添加到您的link_to,因为它默认为get

    PSS。您可以在form_for check_box 中使用multiple: true 来获取多个值。

    【讨论】:

      【解决方案2】:

      我刚遇到这个问题,花了一段时间才解决,所以我会发布我的解决方案以供后代使用。

      我有一个带有序列化哈希字段 messaging_preferences=> { "articles"=>false, "marketing"=>false, "digest"=>false } 的用户模型

      让我感到困惑的是需要在表单中使用fields_for

        <%= f.fields_for :messaging_preferences, user.messaging_preferences do |message_type| %>
          Marketing emails: <%= message_type.check_box :marketing, {}, "true", "false" %><br />
          Article emails: <%= message_type.check_box :articles, {}, "true", "false" %><br />
          Weekly digests: <%= message_type.check_box :digest, {}, "true", "false" %><br />
        <% end %>
      

      并更新控制器中的 user_params 以反映(像这样):``

      但是使用这个(以及用户名和电子邮件参数)会生成对服务器的调用:

      Parameters: {"utf8"=>"✓", "authenticity_token"=>"{{token}}", "user"=>{"name"=>"Jimmy Johnny", "email"=>"spam@gmail.com", "messaging_preferences"=>{"marketing"=>"false", "articles"=>"false", "digest"=>"false"}}, "commit"=>"Update User", "id"=>"6"}
      

      所以,这里我们已经发送了嵌套参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        相关资源
        最近更新 更多