【问题标题】:Changing ruby controller variable based on input from a view根据来自视图的输入更改 ruby​​ 控制器变量
【发布时间】:2013-09-17 05:22:12
【问题描述】:

我正在使用 Stripe 为我正在制作的网站收款。

这是我的看法:

%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 变量和数据量标签来收集付款。我该怎么做?

【问题讨论】:

    标签: ruby button views haml stripe-payments


    【解决方案1】:

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

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

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

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

    此代码块的作用是在输入完成并聚焦时将输入值分配给第二个按钮的 data-ammount 属性,前提是该输入是有效数字。

    【讨论】:

      【解决方案2】:

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

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

      [编辑]

      将变量发布到您的控制器后,只需从您发布它的任何地方获取它,所以如果您使用带有

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

      对于您的数据,只需使用

      @amount = params[:amount]
      

      在您的控制器中获取值。

      [/编辑]

      【讨论】:

      • 我能看一个设置@amount 变量的例子吗?
      • 如何将其设置为数据量的哈希?当我尝试时,它会拒绝该值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      相关资源
      最近更新 更多