내가 시도하고 다음과 같이 두 개의 변수를 곱 방법을 사용하고 방법 내에서 변수를 곱하는 방법 방법은 한 사용자가 유료 이벤트를 위해 여러 공간을 예약 할 수있게하는 것입니다.루비 -</p> <pre><code>def total_amount self.quantity.to_i * self.event.price.to_i end </code></pre> <p>을 나는 레일에 루비를 사용하여 이벤트 응용 프로그램과의 목표를 짓고 있어요 -
금액을 단순히 0으로 표시하는 방식으로 클릭하여 지불하는 방식으로 작동하지 않습니다. 내가 입력에 그들이 필요로 공간의 수를 사용자가 수 내 events.show 양식에 입력 공간이
class BookingsController < ApplicationController
before_action :authenticate_user!
def new
@event = Event.find(params[:event_id])
@booking = @event.bookings.new(quantity: params[:quantity])
@booking.user = current_user
end
def create
@event = Event.find(params[:event_id])
@booking = @event.bookings.new(booking_params)
@booking.user = current_user
Booking.transaction do
@event.reload
if @event.bookings.count > @event.number_of_spaces
flash[:warning] = "Sorry, this event is fully booked."
raise ActiveRecord::Rollback, "event is fully booked"
end
end
if @booking.save
# CHARGE THE USER WHO'S BOOKED
# #{} == puts a variable into a string
Stripe::Charge.create(
amount: @event.price_pennies,
currency: "gbp",
card: @booking.stripe_token,
description: "Booking number #{@booking.id}")
flash[:success] = "Your place on our event has been booked"
redirect_to event_path(@event)
else
flash[:error] = "Payment unsuccessful"
render "new"
end
if @event.is_free?
@booking.save!
flash[:success] = "Your place on our event has been booked"
redirect_to event_path(@event)
end
end
private
def booking_params
params.require(:booking).permit(:stripe_token, :quantity)
end
end
- 방법은 내 예약 컨트롤러에서 나는 다음과 같은 코드를 가지고, 내 예약 모델입니다. I는 NilClass 에러 수신이없는 것처럼
<p>Total Amount<%= @booking.total_amount %></p>
I는 두 변수
.to_i
추가 - 예약 양식이 요구 총량을 반영해야 다음의 코드를 갖는다. 이 방법으로 올바른 결과가 만들어 지도록 수정하는 방법은 무엇입니까?
'nil.to_i'가 제로이기 때문에 그 값 중 하나가 곱셈 전무 인 경우 0을 반환합니다. –
내가 사용한 시도에서 둘 다 0 일 것입니다. 수량에 2, 가격에 1.50을 사용했습니다. 그러나 생산량은 0이었다. –
통화 기호 때문일 가능성이 큽니다. ''1.50 '.to_i'는 1,''1.50'to_f''는 1.50,''1.50'to_i''는 0입니다. 이것은 루비 문자열 - 정수 변환이 작동하는 방식입니다. 당신은 통화를 위해 float을 사용하고 변환하기 전에'£'을 제거해야합니다. –