2013-08-28 38 views
1

我試圖做一個擴散(你發送郵件給很多用戶的地方)。 所以在我的模型(帶mongodb的)在ruby中傳遞一個數組作爲參數

key :email, Array 

在我的控制器:

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

所以在鏈路I傳遞作爲參數的數組:

<%= 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(「,」)但不起作用。 我認爲這將是偉大的,如果@消息將是一個數組(它應該如何)

有人可以幫助我嗎? 在此先感謝

+0

您是否嘗試在輸入中添加':multiple => true'? – Bjoernsen

+0

即使我把這個,只是一個字符串是我通過 – hcarreras

回答

0

最後我解決了它! 問題是我沒有傳遞數組,解決方案是在窗體中。新表格應該是這樣的:

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

好吧,如果你命名以某種方式反映你所處理的對象,也許你應該嘗試:

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

,爲什麼不:

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

@電子郵件不能在該範圍內工作(我把新的行動,沒有創建行動,所以實際上是我的錯)。 User.allEach不好,因爲我想要一個郵件給同一個用戶。 – hcarreras

+0

難道你不能使用類似於:'@recipients = whatever_set_of_users_you_want',並遍歷它? – Miotsu

+0

最後主要的問題是我沒有解析所有的元素,我應該作爲一個數組傳遞,所以我無法在控制器中做任何事情。 謝謝無論如何:) – hcarreras