【发布时间】:2015-03-25 15:44:56
【问题描述】:
我有一个邀请系统,其中有一个电子邮件字段,人们可以向其中添加新用户电子邮件。
目前这接受 1 封电子邮件,我想让用户能够动态添加新的附加电子邮件字段,所以当它提交时,我有一个由 rails strong 参数允许的电子邮件地址数组
这是视图模板
<%= 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 参数将映射到表单中所有字段的数组,如下所示,
:email = {useremail@gmail.com, useremail2@gmail.com}
然后我可以在控制器中的 for each 循环中单独执行操作
目前,参数接受电子邮件字段中的最后一个值并忽略其余值
我试过了
params.require(:invite).permit(email:[]) and
params.require(:invite).permit(:email => [])
但它仍然做同样的事情。
那么我将如何允许 params 接受传入的哈希值??
【问题讨论】:
-
你不能那样使用表单助手。当您告诉 ruby “f.email_field :email”时,rails 将查找名为 email 的活动记录属性。在这种情况下, f 是 @invite。所以你说的是“@invite.email =
”。 -
嗯,是的,我想是的,我是说,电子邮件是否获得了表单中 :email 的所有值,我还能做什么?
-
我认为你可以使用带有fields_for的表单助手guides.rubyonrails.org/form_helpers.html#using-form-helpers
标签: ruby-on-rails forms ruby-on-rails-4 strong-parameters