加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用条带创建订阅

发布时间:2020-12-17 03:06:59 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Stripe创建订阅包. 这就是我到目前为止所拥有的 我的控制器方法. def subscription_one session[:tab] = "$1.99/Month" @subscription = Subscription.where(user_id:current_user.id) end def create @subscription = Subscription.new(param
我正在尝试使用Stripe创建订阅包.
这就是我到目前为止所拥有的

我的控制器方法.

def subscription_one
        session[:tab] = "$1.99/Month"
        @subscription = Subscription.where(user_id:current_user.id)
      end
     def create
      @subscription = Subscription.new(params[:subscription])
      if @subscription.save_with_payment
        redirect_to @subscription,:notice => "Thank you for subscribing!"
      else
        render :new
      end
    end

subscription_one.html.erb

<% if @subscription.present? %>
    CREDIT CARD DETAILS PRESENT
<% else %>
    <form action="/membership/apply" method="POST" id="payment-form">
        <article>
            <label class="amount"> <span>Amount: $5.00</span> </label>
        </article>

        <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
        data-description="A month's subscription"
        data-amount="500"></script>

<% end %>

在我提供的字段中显示所有值后,当我提交时,我收到错误

ActionController::InvalidAuthenticityToken in MembershipController#create

有任何想法吗?

解决方法

几个问题:

形成

您包含的表单是硬编码的

您遇到的问题是,如Philidor Green所述,此表单将不具有Rails提供的正确authenticity token.根据经验,Rails为大多数HTML元素提供帮助,允许您为应用创建一致的代码:

<%= form_tag path do %>
<% end %>

你应该使用form_tag

订阅

Subscription.new(params[:subscription])

应该:

def subscribed_one
    Subscription.new(subscription_params)
end

private

def subscription_params
    params.require(:subscription).permit(:params,:attributes)
end

更新

为了解决这个问题,我会这样做:

#view
<% if @subscription.present? %>
    Credit Card Details Present
<% else %>
   <%= form_tag membership_apply_path,id: "payment-form" do %>
        <%= content_tag :article do %>
            <%= label_tag class: "amount" %>
            <%= content_tag :span,"Amount: $5.00" %>
        <% end %>
        <% submit_tag "Susbcribe" %>
   <% end %>
<% end %>

#app/views/layouts/application.html.erb
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
        data-description="A month's subscription"
        data-amount="500">
</script>

#app/controllers/subscriptions_controller.rb
 def subscription_one
      session[:tab] = "$1.99/Month"
      @subscription = Subscription.where(user_id:current_user.id)
 end

 def create
    @subscription = Subscription.new(params[:subscription])
    if @subscription.save_with_payment
      redirect_to @subscription,:notice => "Thank you for subscribing!"
    else
      render :new
    end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读