【问题标题】:Updating Strong Params - Stripe and Rails 4更新强参数 - Stripe 和 Rails 4
【发布时间】:2014-05-14 12:09:54
【问题描述】:

我已经非常接近使用 Rails 4 在我的网络应用程序上实现条带,但我不断收到以下错误:

ActiveModel::ForbiddenAttributesError in PaymentsController#create

模型在我的 Payments Controller 中的这一行指出了一个问题:

 params[:payment][:stripe_token] = charge.id
      @payment = Payment.new(params[:payment])

      respond_to do |format|
        if @payment.save

我认为问题与强参数有关,因此我尝试将以下内容添加到付款控制器的底部,但我什么也没得到。

def payment_params
  params.require(:payment).permit(:payment, :stripe_token)
end

关于如何解决此问题的想法。我正在使用以下教程来实现条带支付,它似乎可以工作,除了我提交表单时出现的错误,因为我的条带测试页面显示了费用。

网站链接:synaptian

应用的Github:stripe_example

任何帮助将不胜感激。

【问题讨论】:

  • 您能否在导致付款控制器出现问题的行之前写下方法描述 payment_params,例如:payment_params 然后 params[:payment][:stripe_token] = charge.id .. .
  • 我之前按照您的建议添加了它,当我使用 params.require(:payment).permit(:payment, :stripe_token) params[:payment][:stripe_token] 时仍然遇到相同的错误= charge.id @payment = Payment.new(params[:payment])
  • 当您在“payment_params”中定义参数时,您应该使用 payment_params[:stripe_token]。它将通过此​​方法自动访问您的字段。并将其设为私有。
  • 这样写:@payment = Payment.new(params)
  • 以下代码仍在产生错误。仍然不确定我在做什么错 params.require(:payment).permit(:payment, :stripe_token) params[:payment][:stripe_token] = charge.id @payment = Payment.new(params)

标签: ruby-on-rails ruby ruby-on-rails-4 stripe-payments strong-parameters


【解决方案1】:

应该是这样的

payment_params[:stripe_token] = charge.id
  @payment = Payment.new(payment_params)

  respond_to do |format|
    if @payment.save

您将在控制器中拥有此方法私有

private
 def payment_params
   params.require(:payment).permit(:payment, :stripe_token)
 end

如果您不了解,请参考 rails 4 strong parameter tutorial。你可以简单地做到这一点。别担心。

http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2013-10-14
    相关资源
    最近更新 更多