私はライアンベイツのレールキャスト146をフォローしていますが、それは本当に役に立ちます。ただし、カートオブジェクトをプロセスから削除しようとしており、注文を個別に処理するだけです。私が抱えている問題は、2回使用される量をどのように設定するかです。1回は購入の設定に、もう1回は実際に実行するためです。これは私がやろうとしていることですが、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
要するに、パラメータで金額を渡さずにこれを行うにはどうすればよいですか?
ありがとう!