我有一个邀请系统,其中有一个人们可以添加新用户电子邮件的电子邮件字段。
目前这个接受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接受进入的值的哈希值?
答案 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']
这是我用过的链接