2013-09-17 4 views
0

Я использую полосу для сбора денег на веб-сайт, который я делаю.Изменение переменной контроллера ruby ​​на основе ввода с точки зрения

Вот мое мнение:

%script.stripe-button{"data-amount" => "10000", "data-description" => "A Generous Donation", "data-key" => Rails.configuration.stripe[:publishable_key], src: "https://checkout.stripe.com/v2/checkout.js"} 
%br 
%b Amount: 
%br 
%input 
%script.stripe-button{"data-amount" => "", "data-description" => "A Generous Donation", "data-key" => Rails.configuration.stripe[:publishable_key], src: "https://checkout.stripe.com/v2/checkout.js", style:"padding-left: 30px;"} 

Вот мой контроллер:

def create 
    # Amount in cents 
    @amount = 500 

    customer = Stripe::Customer.create(
     :email => '[email protected]', 
     :card => params[:stripeToken] 
    ) 

    charge = Stripe::Charge.create(
     :customer => customer.id, 
     :amount  => @amount, 
     :description => 'Rails Stripe customer', 
     :currency => 'usd' 
    ) 

    rescue Stripe::CardError => e 
    flash[:error] = e.message 
    redirect_to charges_path 
    end 

Для моей первой кнопки, я пытаюсь отправить данные-сумму в переменную величину. Во-вторых, я пытаюсь собрать значение из поля ввода и установить переменную @amount и тег количества данных в кнопке stripe для сбора платежа. Как мне это сделать?

ответ

0

По вашему описанию, это не должно иметь ничего общего с контроллером.

Все, что вам нужно, это установить количество второй кнопки, как только у вас будет правильный ввод числа на входе.

Это может быть сделано с помощью jQuery. Демо-код:

$('#that_input').on('focusout', function(){ 
    if typoeof($(this).val()) == 'number' 
    $('#second_button').data('amount', $(this).val()) 
}); 

Что этот блок кода делает, чтобы присвоить значение входных данных для атрибута данных, суммой второй кнопки, когда ввод закончен и направлены наружу, если этот вход является действительным числом.

0

Это можно сделать легко с помощью небольшого количества JS. Просто обработайте событие click на каждой кнопке, при обработке щелчка, установите значение значения либо с data-amount в первом случае, либо получите значение input во втором случае. Затем

  • Если вы используете форму, задайте значение ввода с соответствующим именем и отправьте его.
  • Если вы используете AJAX, просто разместите это в JSON или что угодно.

[Редактировать]

После отправки переменной к контроллеру, просто получить его оттуда, где вы разместили ее, так что если вы использовали форму с

<input type="hidden" name="amount" /> 

для ваших данных, просто использовать

@amount = params[:amount] 

в вашем контроллере, чтобы получить значение.

[/ Edit]

+0

Могу ли я увидеть пример установки переменной @amount. –

+0

Я только что редактировал мой пост. –

+0

Как я могу установить это для хэша для суммы данных? Когда я пытаюсь это отклонить значение. –

Смежные вопросы