如何使用表单字段RAILS 4允许强参数值数组

时间:2015-03-25 15:44:56

标签: ruby-on-rails forms ruby-on-rails-4 strong-parameters

我有一个邀请系统,其中有一个人们可以添加新用户电子邮件的电子邮件字段。

目前这个接受1封电子邮件,我想让用户能够动态添加新的附加电子邮件字段,所以当它提交时,我有一个由rails strong param允许的电子邮件地址数组

这是视图模板

<%= form_for @invite, :url => landlord_property_invites_path(@landlord.id,@property.id) do |f| %>
    <div class="form-group">
      <%= f.label :email %>
      <%= f.email_field :email ,class: "form-control"%>
    </div>
    <span class="btn btn-default btn-addon">Add another tenant</span>
    <%= f.submit 'Send Email',class:"btn btn-success" %>
<% end %>

这是我的邀请参数

  private
  def invite_params
    params.require(:invite).permit(:email)
  end

所以我想要做的就是点击add another tenant

然后表单将如下所示

<%= form_for @invite, :url => landlord_property_invites_path(@landlord.id,@property.id) do |f| %>
    <div class="form-group">
      <%= f.label :email %>
      <%= f.email_field :email ,class: "form-control"%>
    </div>     
    <div class="form-group">
      <%= f.label :email %>
      <%= f.email_field :email ,class: "form-control"%>
    </div>
    <span class="btn btn-default btn-addon">Add another tenant</span>
    <%= f.submit 'Send Email',class:"btn btn-success" %>
<% end %>

基本上:email param将映射到表单中所有字段的数组,如此,

:email = {useremail@gmail.com, useremail2@gmail.com}

然后我可以在我的控制器的for each循环中单独进行操作

目前,params接受电子邮件字段中的最后一个值,并忽略其余的

我试过了

    params.require(:invite).permit(email:[]) and
    params.require(:invite).permit(:email => [])

但它仍然做同样的事情。

那么我怎样才能让params接受进入的值的哈希值?

1 个答案:

答案 0 :(得分:1)

我明白了,

这是我在视图模板中放入的内容

    <%= email_field_tag 'email[]' %>
    <%= email_field_tag 'email[]' %>

它必须是没有f的标签。对象

我允许它通过

  def invite_params
   params.permit(email:[])
 end

并使用此

访问它
    @emails = invite_params['email']

这会给我

@email = ['email1@gmail.com,email2@gmail.com']

这是我用过的链接

Saving value with same input field in form