Ich bin derzeit nicht in der Lage herauszufinden, wie man Parameter von einem Controller zum nächsten Controller hinzufügen. Iv versuchte render
und redirect_to
und ich kann immer noch nicht zur Arbeit !!undefined Methode `total 'für nil: NilClass NoMethodError in ReservationsController # checkout
Heres mein Controller und Ansicht - Form im Hinblick wird die Wirkung meiner checkout controller
-Ich will die gleiche reservation.id sowohl in der Kasse verwenden und Controller erstellen, so kann ich reservation.total in der Kasse Controller aufrufen.
Wie kann ich die Summe auf create Controller zu hoffen und über die Kasse zu teilen ??
Fehlerprotokoll:
NoMethodError (undefined method `total' for nil:NilClass):
app/controllers/reservations_controller.rb:45:in `checkout'
Reservierungen Controller:
def checkout
nonce = params[:payment_method_nonce]
result = Braintree::Transaction.sale(
:amount => @reservation.total,
:payment_method_nonce => nonce,
:options => {
:submit_for_settlement => true
}
)
if result.success?
puts "success!: #{result.transaction.id}"
elsif result.transaction
puts "Error processing transaction:"
puts "code: #{result.transaction.processor_response_code}"
puts "text: #{result.transaction.processor_response_text}"
else
p result.errors
end
end
def create
#!/usr/bin/env ruby
reviser = Reviser.find(params[:reviser_id])
@reservation = current_user.reservations.create(reservation_params)
if @reservation.total > 0
@token = Braintree::ClientToken.generate
elsif @reservation.total == 0
@reservation.update_attributes status: true
redirect_to @reservation.reviser.user, alert: "Writing Request Success"
else
redirect_to @reservation.reviser, alert: "Oops, something went wrong..."
end
end
erstellen html:
<p>create</p>
<form id="checkout" method="post" action="/checkout">
<div id="payment-form"></div>
<input type="submit" value="Pay">
</form>
<script src="https://js.braintreegateway.com/js/braintree-2.26.0.min.js"></script>
<script>
// We generated a client token for you so you can test out this code
// immediately. In a production-ready integration, you will need to
// generate a client token on your server (see section below).
// var clientToken = "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiI5OGRjMDcyZDFmM2IwNzdlNmI2YmE1NTQ0ZDIxYzQ4YjliZmZlZDA3YmZhNTgxYzRkMTU4MzU2MWIyMjIxYzJlfGNyZWF0ZWRfYXQ9MjAxNi0wNy0xNVQwNjo0OTo0MS4zMTczNjM3NDArMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tLzM0OHBrOWNnZjNiZ3l3MmIifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6ImFjbWV3aWRnZXRzbHRkc2FuZGJveCIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9LCJjb2luYmFzZUVuYWJsZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0=";
var clientToken = "<%= @token %>";
braintree.setup(clientToken, "dropin", {
container: "payment-form"
});
</script>
post 'checkout', to: 'reservations#checkout'
get 'checkout', to: 'reservations#checkout'
Kann nicht Sie finden nur Reservierung von params: id? in der Kasse? –
Sie vermissen auch @ in @reviser in def erstellen –
@reservation = Reservation.find (params [: ID]) gibt mir einen anderen Fehler: Konnte nicht finden Reservierung mit 'ID' = –