2013-08-28 5 views
1

확산 (많은 사용자에게 이메일을 보내는)을 시도하고 있습니다. 그래서 내 컨트롤러에서루비에서 매개 변수로 배열을 전달하십시오.

key :email, Array 

(MongoDB를 포함) 내 모델 : 내 양식에

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

:

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

그래서 링크에 나는 인수로 배열을 전달

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

내 메일러에 문제가 있습니다 :

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

문제는 @ 메시지가 배열이 아니므로 문자열입니다. 이 루프는 한 번 루프가됩니다. @ message.email.split (",")도 시도했지만 작동하지 않습니다. @message가 배열이되는 것이 좋을 것 같아요 (어떻게해야할까요?)

누군가가 도와 줄 수 있습니까?

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

을하고 왜 안 : 당신은 어떻게 든 당신이 다루고있는 개체를 반영 이름을 지정하는 경우 사전에 감사

+0

입력에'multiple => true '를 추가하려고 했습니까? – Bjoernsen

+0

내가 넣어도 그 문자열은 그냥 통과 한 것이다. – hcarreras

답변

0

마지막으로 나는 그것을 해결! 문제는 제가 배열을 전달하지 않고 있다는 것입니다. 솔루션은 형태입니다. 새 양식은 다음과 같아야합니다.

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

음, 어쩌면 당신은 시도해야

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

@ 범위가 그 범위에서 작동하지 않는다. (나는 새로운 액션을 만들지 않았고, 액션을 만들지 않았다. 그래서 실제로 내 잘못이다.) 하나의 단일 사용자에게도 동일한 메일러를 보내고 싶기 때문에 User.all.each가 좋지 않습니다. – hcarreras

+0

다음과 같이'@recipients = whatever_set_of_users_you_want'를 사용할 수 없으며 그것을 반복 할 수 있습니까? – Miotsu

+0

마지막으로 주된 문제는 모든 요소를 ​​파싱하지 않았기 때문에 배열로 전달해야하므로 컨트롤러에서 아무 것도 할 수 없었습니다. 고맙습니다. :) – hcarreras