在Rails用户表单中包含字段,但不在params [:user]哈希中

时间:2015-09-06 19:19:38

标签: ruby-on-rails forms hash

我正在尝试为user创建一个表单。在该表单中,他们指定了他们想要加入的team。每个team都有一个与之关联的密码,以方便加入team。我试图在表单中包含它,但自然它最终被包含在params[:user]哈希中。这很烦人,因为我不需要这些信息来创建新的user记录。有没有办法在字段中包含此密码以便在控制器中进行验证,但是没有将其包含在params[:user]哈希中?如果没有,是否有一种干净的方法可以在创建user期间从哈希中删除不需要的值?

2 个答案:

答案 0 :(得分:1)

您可以执行此操作以从.nav li { float: left; }

中删除team_password
params[:user]

如果您的控制器中已经定义了 def user_params params[:user].except(:team_password) end ,那么您可以使用现有的user_params方法链接.except(:team_password)

user_params

答案 1 :(得分:1)

使用password_field_tag而不是password_field并将其放在表单中。

可以使用表单构建器

创建表单
<%= form_for @user do %>
  <%= password_field_tag :password %>
  ...
<% end %>

或使用简单的form_tag

<%= form_tag ... do %>
  <%= password_field_tag :password %>
  ...
<% end %>

通过这种方式,即使您使用表单构建器,该字段也将作为顶级参数传递,并且不会嵌套在用户参数中。您可以使用params[:password]获取它。

另一种选择是将其留在用户归属内并从Hash中删除值,但我个人不喜欢尽可能修改输入参数。