問題
私は贈り物に対する約束をすることができるアプリがあります。質疑書が作成されたら、プレゼンジャーに電子メールによる確認を送信する必要があります。サーバーはメールを送信しようとしたときに500 Internal Server Error
を発行しています。ActionMailerがmongoidオブジェクトを配信しないのはなぜですか?
コンテキスト:
- のRuby on Railsの3.2.0
- actionmailerの3.2.0
- Mongoid 2.4.3私はactionmailerのを使用しました
- シン1.3.1
これは私の初めてのモンゴイドとの仕事です。
コード
class Pledge
include Mongoid::Document
field :name, :type => String
field :email, :type => String
field :amount, :type => Float
embedded_in :gift
end
class PledgesController < ApplicationController
def create
@gift = Gift.find(params[:gift_id])
@pledge = @gift.pledges.new(params[:pledge])
respond_to do |format|
if @pledge.save
PledgeMailer.pledge_confirmation(@pledge).deliver
format.html { redirect_to :root, notice: 'Pledge successfully created.' }
else
...
end
end
end
...
end
class PledgeMailer < ActionMailer::Base
default :from => "[email protected]"
def pledge_confirmation(pledge)
@pledge = pledge
mail(:to => pledge.email, :subject => "Thanks - pledge confirmation")
end
end
ログイン
それでは[email protected]
でSam Andreas
ギフト4f2695009f5b7f3464000001
ため$42.42
を約束しましょう。
これはうれしくMongodbに保存され、:root
にリダイレクトされます。
Started POST "/gifts/4f2695009f5b7f3464000001/pledges" for 127.0.0.1 at 2012-02-08 14:13:21 +1100
Processing by PledgesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"EwgOwALSb8uUsT4Ow1+RBvAEihXKXoqKS1JA9ZfpUfg=",
"pledge"=>{"name"=>"Sam Andreas", "email"=>"[email protected]", "amount"=>"42.42"},
"commit"=>"Create Pledge", "gift_id"=>"4f2695009f5b7f3464000001"}
MONGODB danspressie_development['gifts'].find({:_id=>BSON::ObjectId('4f2695009f5b7f3464000001')}).limit(-1).sort([[:_id, :asc]])
MONGODB danspressie_development['gifts'].update({"_id"=>BSON::ObjectId('4f2695009f5b7f3464000001')}, {"$push"=>{"pledges"=>{"_id"=>BSON::ObjectId('4f31e8519f5b7f41d1000002'), "name"=>"Sam Andreas", "email"=>"[email protected]", "amount"=>42.42}}})
Completed 500 Internal Server Error in 11ms
SyntaxError (/Users/daniel/Dropbox/dev/src/danspressie/app/mailers/pledge_mailer.rb:4: invalid multibyte char (US-ASCII)
/Users/daniel/Dropbox/dev/src/danspressie/app/mailers/pledge_mailer.rb:4: syntax error, unexpected $end, expecting keyword_end
def pledge_confirmation(pledge)
^):
app/controllers/pledges_controller.rb:8:in `block in create'
app/controllers/pledges_controller.rb:6:in `create'
は難しい苦労が、エラーがpledge_confirmation
にある場所を確認することはできません。PledgeMailer
への呼び出しを追加することで、我々が得ます。
あなたは何か指針を持っていますか? :)
'cat -v pledge_mailer.rb'を試してください。これは、奇妙なバイトがどこにあるのかを示すはずです。 –
@muistooshortありがとう!私は他のバイトを見つけませんでした。しかし、私はMischaの答えに従ってそれを再作成し、問題を修正しました。 –