0

私はRailsの初心者で、ショーページからのメール送信に問題があります。お問い合わせフォームのチュートリアルはいくつかありますが、「show」ページのようなページからメールを送信するチュートリアルが見つかりません。私は自分のルートに大きなエラーがあると信じています。モデルでは、ユーザーには複数のプロモーションがあり、プロモーションの表示ページでは、current_userが@userに電子メールを送信できるようにしたいと述べています。

こちらがapp/mailers/quote_mailer.rbです

class QuoteMailer < ActionMailer::Base
  default :from => "tim@example.com"

  def quote_mail(promotion)
    @user = user
    mail(:to => user.email, :subject => "You have an inquiry homeboy!")
  end 
end

Promotions_controllerに、間違っていると思われるこのアクションを入れました。

def quotedeliver
  QuoteMailer.quote_mail.deliver
  flash[:notice] = 'report sent!'
  redirect_to root_path # or wherever
end

これが私がメールを送信するために使用するフォームです(:urlはおそらく間違っていますが、どのように見えるべきかわかりません)

<%= form_for quote_mail, :url => quotedeliver_promotion_path(promotion), :html => {:method => :put } do |f| %>
  <%= f.text_area :body %>
  <%= f.submit %>
<% end %>

私はこれでいくつかの助けが欲しいです。私はstackoverflowでそれのようなものを見つけることができません、私は何日も試みてきました。ありがとうございました!

4

3 に答える 3

2

config/routes.rbにルートがない可能性があります

あなたはそれを次のように定義することができます

post '/quotedeliver_promotion' => 'promotions#quotedeliver', :as => quotedeliver_promotion

rubyの構文規則に従うには、quotedeliverをquote_deliverに書き直す必要があることに注意してください。電話するとき

QuoteMailer.quote_mail.deliver

パラメータを指定していないので、これを試してください

QuoteMailer.quote_mail(current_user).deliver

そして、あなたの方法を変更します

def quote_mail(user)
  mail ....
end

そして、あなたはすべて良いです

于 2012-04-24T05:22:27.633 に答える
1

電子メールの送信に関して(Railscastを介して)優れたスクリーンキャストがいくつかありますhttp://railscasts.com/?tag_id=28

最後に、メール送信メソッドをshowアクションに添付しないでください(現在実行している場合)。理由は、show actionは何かを表示するためだけであり、ユーザーがそのページを更新する可能性があるためです。したがって、それにメーラーを添付すると、更新のたびにメールが送信される場合があります。

于 2012-04-24T05:18:54.503 に答える
0
def quote_mail(promotion)
   @user = user
  mail(:to => user.email, :subject => "You have an inquiry homeboy!")
end 

あなたがユーザー変数にアクセスしているところから、それは私が思うプロモーションでなければなりません。

于 2012-04-24T04:46:33.287 に答える