私はRailsアプリケーションの支払いにStripeを使用していますが、上記のエラーが発生しました。私は最近、私のコードの大きな塊を私のコントローラからモデルに移しました。これが私がこのエラーに遭遇したのは初めてです(前に支払いをテストしたことがありません)。なぜこれが今起きているのか分かりません。Rails/Stripe - 未定義メソッド `stripe_token 'for nil:NilClass
は、ここに私のモデルのコードです -
Booking.rb
class Booking < ActiveRecord::Base
belongs_to :event
belongs_to :user
def reserve
# Don't process this booking if it isn't valid
return unless valid?
# We can always set this, even for free events because their price will be 0.
self.total_amount = quantity.to_i * event.price_pennies.to_i
# Free events don't need to do anything special
if event.is_free?
save
# Paid events should charge the customer's card
else
begin
charge = Stripe::Charge.create(amount: total_amount, currency: "gbp", card: @booking.stripe_token, description: "Booking number #{@booking.id}", items: [{quantity: @booking.quantity}])
self.stripe_charge_id = charge.id
save
rescue Stripe::CardError => e
errors.add(:base, e.message)
false
end
end
end
end
そして、私のコントローラで -
bookings_controller.rb
def create
# actually process the booking
@event = Event.find(params[:event_id])
@booking = @event.bookings.new(booking_params)
@booking.user = current_user
if @booking.reserve
flash[:success] = "Your place on our event has been booked"
redirect_to event_path(@event)
else
flash[:error] = "Booking unsuccessful"
render "new"
end
end
ここでエラーメッセージだ -
は、私はRailsのにかなり新たなんだ、これは簡単なようであれば謝罪ので、任意の助けいただければ幸いです。
実際にエラーメッセージが表示されることがありますので、どのコード行が表示されているのかわかりますか?それがモデルファイル内にある場合、begin/rescueブロックでは、@ bookingオブジェクトを定義した場所は表示されません。 –
エラーメッセージが追加されました。 –