gpt4 book ai didi

ruby-on-rails - Rails 参数数量错误(1 代表 0),SubscribeController#update 中的 ArgumentError

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:55 25 4
gpt4 key购买 nike

我使用条纹创建了一个订阅部分。但是我遇到了路由问题。我不确定发生了什么或该怎么做。任何帮助将不胜感激

迁移到用户模型

class AddExtraDetailsToUser < ActiveRecord::Migration
def change
add_column :users, :subscribed, :boolean, :default => false
add_column :users, :stripeid, :string
end
end

Routes.rb

Rails.application.routes.draw do

resources :subscribe

devise_for :users do
resources :posts
resources :products
end

get 'users/:id' => 'users#show', as: :user

end

订阅.rb

class SubscribeController < ApplicationController
before_action :authenticate_user!


def new
end

def update
token = params [:stripeToken]
customer = Stripe::Customer.create(
:card => token,
:plan => 2,
:email => current_user.email
)

current_user.subscribed = true
current_user.stripeid = customer.id
current_user.save

redirect_to current_user_path, :notice => "Subscription created"
end
end

subscribe.html.erb

<%= form_tag subscribe_path(1), :method => :put do %>

<article>

<label class="amount">
<span> Amount: $27</span>

</label>

</article>



<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-amount="2700"
data-name="Test"
data-description="Subscription"
data-email="<%= current_user.email %>">
</script>
</form>

<% end %>

错误:

enter image description here

最佳答案

如果您阅读了 params 的文档方法,你可以看到它不接受任何参数。但你写成:

params [:stripeToken]

Ruby 认为您将符号数组 [:stripeToken] 作为参数传递给 params 方法。根据 params 方法签名,它不应该接受任何参数,但是你正在传递给它,它会说你 -

wrong number of arguments (1 for 0)

应该像下面这样:

token = params[:stripeToken]

现在在上面的行 params 返回一个新的 ActionController::Parameters 对象,该对象已用 request.parameters 实例化返回您调用方法的对象[] .

关于ruby-on-rails - Rails 参数数量错误(1 代表 0),SubscribeController#update 中的 ArgumentError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com