2016-07-07 66 views
0

所以我通过一系列电影角色循环播放,每个角色都有一个复选框。我希望这样,当我点击“Select My Cast”按钮时,我将重定向到我的控制器中的teams_path(index方法),以便能够获得我在params hash中的数组中选择的字符的ID 。如何使用check_box_tag将它传递给Rails中的params散列?

下面的代码:

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

回答

0

如果您的控制器没有从您的代码段获取参数,它最有可能的是:

  1. 你忘了,包括您的页面上的表单标签
  2. 点击该link_to锚链接上,而不是提交表单。

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

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

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

0

我刚刚遇到这个问题,需要一段时间才能解决,所以我会发布我的解决方案后代。

我有一个用户模型序列化哈希场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反映(像这样):``

但与此(和USER_NAME &电子邮件PARAMS)生成此调用服务器:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"{{token}}", "user"=>{"name"=>"Jimmy Johnny", "email"=>"[email protected]", "messaging_preferences"=>{"marketing"=>"false", "articles"=>"false", "digest"=>"false"}}, "commit"=>"Update User", "id"=>"6"} 

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

相关问题