Я слежу за железной дорогой Райана Бейтса 146 , и это действительно полезно.Тем не менее, я пытаюсь удалить объект корзины из процесса, и просто обработать заказ индивидуально.У меня проблема в том, как установить сумму, которая используется дважды: один раз для настройки покупки, а затем один раз для ее фактического исполнения.Это то, к чему я прибегал, но оно выставляет сумму в return_url, что я считаю, вероятно, плохой практикой:
class OrdersController < ApplicationController
def express
response = EXPRESS_GATEWAY.setup_purchase(params[:amount],
:ip => request.remote_ip,
:return_url => new_order_url(:amount=>params[:amount]),
:cancel_return_url => root_url
)
redirect_to EXPRESS_GATEWAY.redirect_url_for(response.token)
end
def new
@order = Order.new(:express_token => params[:token], :price_in_cents=>params[:amount])
end
Затем в представлении я добавляю скрытое поле с суммой, чтобыкогда заказ создан, в него встроена сумма (я добавил поле price_in_cents в модель заказа).Это работает хорошо, но выставление суммы в качестве параметра может быть немного сомнительным.Наконец, код покупки выглядит следующим образом:
def purchase
response = process_purchase
transactions.create!(:action => "purchase", :amount => price_in_cents, :response => response)
cart.update_attribute(:purchased_at, Time.now) if response.success?
response.success?
end
Короче, как я могу это сделать, не передавая сумму в параметрах?
Спасибо!