Как установить сумму в рассрочку на основе ввода в форму - PullRequest
0 голосов
/ 31 августа 2018

Я довольно новичок в рельсах и полосах. Я строю свое приложение в Ruby на рельсах с помощью чекового платежа. Пользователь заполняет некоторые данные, которые затем сохраняются в базе данных, когда платеж принят. В форме у пользователя есть возможность либо купить разные размеры, либо цветок. маленький Средний Большой. маленький - 30 фунтов, средний - 60 фунтов, большой - 90 фунтов. Я хочу, чтобы сумма, которую полоса списывает с клиента, изменялась при выборе различных вариантов в форме.

вид

<%= simple_form_for(Subscription.new, :url => { :action => "create" })  do |f| %>
  <%= f.error_notification %>
  <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>

  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.input :address %>
    <%= f.input :postcode %>
    <%= f.input :mobile_number %>
    <%= f.input :deliverAddress %>
    <%= f.input :deliverName %>
    <%= f.input :frequency, collection: Subscription::FREQUENCY, prompt: 
     "Frequency" %>
    <%= f.input :size, collection: Subscription::SIZE, prompt: "select size" %>
    <%= f.input :delivery , collection: Subscription::DELIVERY, prompt: "Deliver or Collect" %>
    <%= f.input :start %>
  </div>


  <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
        data-description="A month's subscription"
        data-amount=???
        data-locale="gbp"></script>
<% end %>

subscription_controller

def create


  @subscription = Subscription.new subscription_params.merge(card_token: stripe_params["stripeToken"])
  raise "Please, check registration errors" unless @subscription.valid?
  @subscription.process_payment
  @subscription.save
  redirect_to @subscription, notice: 'Registration was successfully created.'
rescue e
  flash[:error] = e.message
  render :new
end

private
  def stripe_params
    params.permit :stripeEmail, :stripeToken
  end

контроллер

class Subscription < ApplicationRecord
  validates :name, :address, :postcode, :mobile_number, :frequency, :size, :delivery, :start, presence: true
  # validates :mobile_number, numericality: {only_integer: true }, length: { minimum: 10, too_short: "is too short "}

  FREQUENCY = %w{ Weekly Fortnightly Monthly}
  SIZE = ['small', 'medium', "Large", "sublime"]
  DELIVERY = ['Thursday Delivery', 'Friday Delivery', 'Friday AM Collection', 'Friday PM collection']

  def process_payment

 customer = Stripe::Customer.create card: card_token

 Stripe::Charge.create customer: customer.id,
                      amount: ???,
                      description: "flowers",
                      currency: 'gbp'
  end
end
...