予約の多いレストランのリソースがあります。予約が作成された後に送信されるメールをフォーマットしようとしています。
これは私が得るエラーです:
undefined method `name' for nil:NilClass
私の app/views/reservation_mailer/registration_confirmation.html.erb のコード
<p>Thanks for reserving a spot for <%= @restaurant.name %>!</p>
mailers フォルダー内の reserved_mailer.rb:
class ReservationMailer < ActionMailer::Base
default from: 'johnzw89@gmail.com'
def registration_confirmation(restaurant, reservation)
mail(:to => reservation.email, :subject => "Reservation")
@restaurant = restaurant
@reservation = reservation
end
end
レストランのショーページに新しい予約フォームがあります。以下は、reservations_controller です。
def create
@restaurant = Restaurant.find(params[:restaurant_id])
@reservation = @restaurant.reservations.new(params[:reservation])
respond_to do |format|
if @reservation.save
ReservationMailer.registration_confirmation(@restaurant ,@reservation).deliver
format.html { redirect_to @restaurant, notice: 'Reservation was successfully created.' }
format.json { render json: @restaurant, status: :created, location: @restaurant }
else
format.html { render action: "new" }
format.json { render json: @reservation.errors, status: :unprocessable_entity }
end
end
end
@restaurant が来ない理由がわかりません。私は、reservations_controller からの @restaurant 変数が registration_confirmation メーラー メソッドに渡されていないと思われますが、よくわかりません...どんな提案も本当に感謝しています!
ありがとう。