2012-04-24 5 views
0

私はRailsのnoobです。表示ページからメールを送信する際に問題があります。そこにいくつかのコンタクトフォームチュートリアルがありますが、私は 'show'ページのようなページから電子メールを送信する場所を見つけることができません。私は信じているルートに大きな誤りがある。モデルでは、ユーザーには複数のプロモーションがあり、プロモーションの表示ページでは、current_userが@userにメールを送信できるようにしたいと述べています。ここで Ruby on Rails:表示ページからメールを送信

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

は、私が送信するために使用形式です:ここ

は私が間違っているかもしれないと思うこのアクションを置くpromotions_controllerでアプリ/メーラー/ quote_mailer.rb

class QuoteMailer < ActionMailer::Base 
    default :from => "[email protected]" 

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

です電子メール(:URLはおそらく間違っているが、私はそれがどのように見えるべきかを知らない)

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

私は大好きですいくつかこれに役立ちます。私はstackoverflow上のようなものを見つけることができない、私は数日間試しています。ありがとうございました!

+0

いただきましたエラー優れているされていませんあなたは..を取得しています –

+0

あなたのsmtp設定はdevelopment.rbにありますか? –

答えて

2
をリフレッシュするために、メールが出る場合がございます

config/routes.rbに経路がない可能性があります

あなたはquotedeliverがquote_deliver書き換えるルビー構文規則に従わなければなら

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

ノートと同じように定義することができます。あなたは

QuoteMailer.quote_mail.deliver 

を呼び出すときは、パラメータを与えるので、この

QuoteMailer.quote_mail(current_user).deliver 

を試してみて、

def quote_mail(user) 
    mail .... 
end 

であなたの方法を変更すると、あなたはすべての

+0

Albandiguerのお返事ありがとうございます!私はPromotionsでNoMethodErrorを取得しています#未定義のメソッドを表示します。 'quote_deliver_promotions_path'これがフォームです。私はあなたの助けが大好きです! <%= form_for @quote_mail、:url => quote_deliver_promotions_path(@user)、:html => {:method =>:put} do | f | %> \t <%= f。text_area:身体%> \t \t \t \t <%= f.submit%> \t \t \t \t <% end %> – Tim

+0

こんにちは、あなたはPOSTを使用してこのフォームを送信することができます。 html => {:method =>:put}、私が言ったようにルートを定義した場合、パスはquotedeliver_promotion_pathであり、パラメータはありません。ユーザーはコントローラのモデルに与えられます – albandiguer

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

あなたがユーザー変数にアクセスしている場所から、私は思っています。

1

Uは、あなたが取得しているエラーメッセージを投稿し、そして電子メールhttp://railscasts.com/?tag_id=28

と最後に一つの送信について(railscastsを介して)いくつかの優れたスクリーンキャストがあり、ショーへの送信方法メールを添付しないでくださいでしたアクション(あなたが現在行っている場合)、その理由は、唯一のビューのために何かしてユーザーがそのページをshowアクションリフレッシュされる可能性がありますされている、あなたはそれにメーラーを添付する場合は、それぞれが

歓声

+0

このヒントをお寄せいただきありがとうございます。この情報に基づいて、私はこれは、別のページに存在するメールフォームを表示するためにjqueryモーダルを使用することを意味していると思います。 – Tim

関連する問題