根据视图的输入更改ruby控制器变量

时间:2013-09-17 05:22:13

标签: ruby button views haml stripe-payments

我正在使用条纹为我正在制作的网站筹集资金。

以下是我的观点:

%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 => 'example@stripe.com',
      :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变量和data-amount标签来收集付款。我该怎么做?

2 个答案:

答案 0 :(得分:0)

这可以通过一些JS轻松完成。只需处理每个按钮上的click事件,处理点击时,在第一种情况下使用data-amount设置值,或在第二种情况下获取input值。然后

  • 如果使用表单,请使用适当的名称设置输入的值并提交。
  • 如果您使用的是AJAX,只需将其发布在JSON或任何您喜欢的地方。

[编辑]

将变量发布到您的控制器之后,只需从您发布的任何地方获取它,因此如果您使用了

的表单
<input type="hidden" name="amount" />

您的数据,请使用

@amount = params[:amount]
在控制器中

获取值。

[/编辑]

答案 1 :(得分:0)

根据你的描述,这应该与控制器无关。

一旦输入中有一个有效的数字输入,你看起来只需要设置第二个按钮的数量。

这可以通过jQuery轻松完成。演示代码:

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

这段代码的作用是在输入完成和聚焦时将输入值分配给第二个按钮的data-ammount属性,如果该输入是有效数字。