将数组作为参数传递给ruby

时间:2013-08-28 11:55:08

标签: ruby-on-rails mongodb argument-passing mailer

我正在尝试进行传播(您向许多用户发送电子邮件)。 所以在我的模型中(使用mongodb)

key :email, Array  

在我的控制器中:

@users = params[:user]
@emails = Array.new
@users.each do |user|
  @emails << User.find_by_username(user).email
end

所以在链接中我作为参数传递数组:

<%= link_to "Create a diffusion", mailer_path(:user => User.all)%>

以我的形式:

<%= f.input :email, :as => :hidden, :input_html => { :value => @emails } %>

问题出在我的邮件中:

@message.email.each do |email|
  mail(:to => email, :subject => @message.subject)
end

问题是@message不是数组,是一个字符串。 所以这个循环将是一次循环。 我也尝试过@ message.email.split(“,”)但是不起作用。 我认为如果@message是一个数组(它应该如何)将会很棒

有人可以帮帮我吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

好吧,如果你的命名是以某种方式反映你正在处理的对象,也许你应该尝试:

@emails.each do |mail|
  mail(:to => mail, :subject => @message.subject, ...)
end

为什么不:

User.all.each do |user|
  mail(:to => user, :subject => @message.subject, ...)
end

答案 1 :(得分:0)

最后我解决了! 问题是我没有传递数组,解决方案是在表单中。新表格应该是:

<% @emails.each do |email| %>
  <%=f.input "email[#{email}]", :as => :text, :as => :hidden, :input_html => { :value => ""} %>
<% end %>