質問

私はactionmailerのと間違っをやっているかを把握しようとしています。私は、メーラーに複数の引数を渡すことができるようにする必要がありますが、エラー「引数の数が間違って(2 1)」を受信し続けます。

私のコードは次のとおりです。soldier_controller

def create
  @soldier = Soldier.new(params[:soldier])
  @battalion = Battalion.find(params[:battalion_id])
  @company = Company.find(params[:company_id])
  @frg = @company.users.find_by_position('FRG Leader')
respond_to do |format|
  if @soldier.save
    flash[:notice] = 'Soldier was successfully created.'
    format.html { redirect_to battalion_company_soldier_path(@battalion, @company, @soldier)}
    format.xml  { render :xml => @soldier, :status => :created, :location => @soldier }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @soldier.errors, :status => :unprocessable_entity }
    end
  end
end

soldier_mailer.rbます:

class SoldierMailer < ActionMailer::Base

def welcome_email(soldier, primary)  
  recipients soldier.primary.email
  from "laurenrothlisberger@gmail.com"  
  subject "Welcome to the Unit"  
  sent_on Time.now 
  body 
end

soldier_observer.rbます:

 def after_create(soldier, primary)  
   SoldierMailer.deliver_welcome_email(soldier, primary)  
 end 

基本的に私は、そのメールアドレスがすべての兵士モデルに関連付けられているモデルであるいくつかの異なる受信者に、この同じ電子メールを送信する必要があります。私はこの方法ではただ一つのパラメータがある場合に電子メールを送信して問題はありません。私は複数を追加する場合には、そのエラーをスローします。

私は任意のヘルプや指導をいただければ幸いです。

感謝します。

役に立ちましたか?

解決

これを試してみてください

class SoldierMailer < ActionMailer::Base

  def welcome_email(soldier)  
    recipients soldier.email_addresses
    from "laurenrothlisberger@gmail.com"  
    subject "Welcome to the Unit"  
    sent_on Time.now 
  end
end
あなたの兵士のモデルではこれにより、

:私はあなたが使用したい複数の電子メールアドレスが含まれている関連があると仮定しています。

class Soldier

  has_many :users

  def email_address
    # Results in ['primary@abc.com', 'user1@abc.com', 'user2@abc'.com]
    ([primary] + users.collect { |u| u.email }).flatten
  end
end

キーはactionmailerの中に「受信者」は、メールアドレスの配列を取ることができるということです。この情報がお役に立てば幸いです。

他のヒント

after_createメソッドは、パラメータとしてモデルを取ることができます。 プライマリが兵士のフィールドがある場合、あなたのような何かを行う必要があります。

def after_create(soldier)
  SoldierMailer.deliver_welcome_email(soldier, soldier.primary) 
end

?たぶん私は完全にあなたの苦境を理解していないが、そこに何が間違っているだけで、あなたのdeliver_welcome_email方法に何か別のを送信している。

たぶん、あなたはあなたの複数の受信者に法に配列やハッシュを送信することができます。レールのマニュアルを読んでから、これらのアクションメーラー方法は一つだけの引数を取るようです。

また、私は少しあなたのメーラーにこれらのパラメータの両方を送信する必要がある理由について困惑しています。それはあなたにのみ使用soldierのように見えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top