ruby-on-rails - 带状充电的未定义变量“游戏”
问题描述
我正在使用一个完美的条纹卡,但是我正在将条纹连接用于一个市场,它根据他们的商家 ID 向不同的用户发送付款。我收到“游戏”错误。
我也尝试定义变量 game = Game.find(params[:game_id]) 但我收到错误“找不到没有 ID 的游戏”
这是我的条纹方法:
class LineItemsController < ApplicationController
def charge
price = params[:amount].to_f*100
Stripe::Charge.create({
amount: price.to_i,
currency: 'usd',
source: params[:stripeToken], # obtained with Stripe.js
description: 'plan',
:destination => {
:amount => price * 94,
:account => game.user.merchant_id
}
})
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
line_items
属于cart
and 我有一个 has_many 并且属于 and 之间的game
关联line_items
。
class LineItem < ApplicationRecord
belongs_to :game
belongs_to :cart
def total_price
game.price.to_i * quantity.to_i
end
end
这是我的游戏模型:
class Game < ApplicationRecord
belongs_to :user
has_many :line_items
end
这是我的购物车/show.html.erb 文件
<p id="notice"><%= notice %></p>
<%= link_to 'Keep Shopping', games_path %>
<div>
<%= render(@cart.line_items) %>
</div>
<div>
<%= link_to 'Empty Cart', @cart, method: :delete, data: { confirm: "Are you sure?" } %>
</div>
<div>
Total: <%= number_to_currency(@cart.total_price) %>
</div>
<script src="https://js.stripe.com/v3/"></script>
<form action="/charge" method="post" id="payment-form">
<div id="content" class="section-padding">
<div class="container">
<div class="row">
<div class="col-md-12 col-xs-12">
<%= hidden_field_tag :cart_id , nil, value: @cart.id %>
<%= hidden_field_tag :amount , nil, id: "amount", value: @line_item.total_price %>
<input
type="submit"
value="Pay with Card"
data-key="<%= ENV['STRIPE_PUBLISHABLE_KEY'] %>"
data-currency="usd"
class="btn btn-primary"
/>
</div>
</div>
</div>
</div>
</form>
<script src="https://checkout.stripe.com/v2/checkout.js"></script>
<script>
$(document).ready(function() {
$(':submit').on('click', function(event) {
event.preventDefault();
var $button = $(this),
$form = $button.parents('form');
var opts = $.extend({}, $button.data(), {
token: function(result) {
$form.append($('<input>').attr({ type: 'hidden', name: 'stripeToken', value: result.id })).submit();
}
});
StripeCheckout.open(opts);
});
});
</script>
所以发生了什么是游戏 has_many 行项目。订单项属于游戏和购物车。购物车只有很多订单项
解决方案
您需要game
在使用它之前声明变量LineItemsController#charge
像game = Game.find(params[:game_id])
以前一样Stripe::Charge.create...
推荐阅读
- php - 使用分隔符将 csv 格式输入导入 mysql
- mysql - 一键选择不同条件的最小值和最大值
- java - 在 StringBuilder append() 语句中进行连接与使用两个 append() 语句所花费的执行时间是否不同?
- php - 如何按值比较对数值数组进行排序并更改数组索引的位置
- http - 可以使用 SDL_Net 通过 HTTP/HTTPS 下载文件吗?
- c++ - 可以popen找出是否安装了某些应用程序?
- objective-c - 这个 Obj-C 文档中的 `+monthArray` 是什么?
- c# - 为什么我的内部数组没有被反序列化?
- docker - 在容器中调试 groovy 脚本
- javascript - how to set image width to clientHeight x 5.128571428571429