我已经在我的ruby on rails项目中实现了条带化,其方式是在“列表”页面(显示所有报价的页面)上有多个“报价”(您可以从中选择不同的价格)到目前为止,我已经拥有了在后端工作,因为当您为要约付款时,它可以正确计算价格,并且正确的金额将流向后端。
问题在于,当用户结帐时,它没有显示出要支付给后端的价值。我认为这是一个范围问题,出于某种原因我无法将值带到表单页面。下面是我的代码。
Controllerfile.rb
class ChargesController < ApplicationController
attr_accessor :amount
def self.create
# Amount in cents. This amount will be charged.
@amount = 0
@listing = Listing.find(params[:listing_id])
listing_amount = @listing.amount
@offers = @listing.offers
@offers.each do |offer|
offer_interest = offer.interest
offer_month = offer.months
@amount = (listing_amount * offer_interest * offer_month / 12).to_i
end
end
stripe_form.html.erb在页面上显示的位置是“ data-amount =“
<%= form_tag listing_offer_charges_path(@listing, @listing.offers) do %>
<article>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
<label class="amount">
<span>Interest: AU$</span>
<%= @listing.interest_amount %>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="Purchase Book"
data-amount="<%=@amount %>"
data-locale="auto"></script>
<% end %>
答案 0 :(得分:0)
您的应用程序流程并不十分清楚,但是由于您位于stripe_form.html.erb上,我认为控制器和视图之间必须有一个中间步骤。如果您在某处使用redirect_to,则可能在获取视图时@amount为空。 @listing和@listing提供的值有效吗?