У меня есть полоса подписки на моем сайте. вчера я создал базовый способ просмотра истории платежей и использованных карт. теперь я хочу разбить это на два представления, чтобы история платежей находилась на одной странице, а используемые карты — на другой странице. Я чувствую, что должен что-то упустить, но когда я пытался это сделать, на странице ничего не отображалось. Я довольно новичок в рельсах, поэтому вся эта штука с подпиской на полосу была немного сложной, но добраться туда. Это исходный код, может кто-нибудь дать некоторые рекомендации относительно шагов, которые мне нужно выполнить. Я попытался буквально разделить это на два разных файла представления, но это не сработало, поэтому я вернулся туда, где был изначально!
подписки/show.html.erb
<h1>View your payment history and cards</h1>
<h4><%= @charges.data.length %> Charges! </h4>
<% @charges.data.each do |charge| %>
<%= charge.statement_description %>
£<%= charge.amount %>
<%= Time.at(charge.created).strftime("%d/%m/%y") %>
<% end %>
<h4><%= @charges.data.length %> Cards! </h4>
<% @cards.each do |card| %>
<%= card.brand %>
**** **** **** <%= card.last4 %>
<%= card.exp_month %>/<%= card.exp_year %>
<% end %>
контроллер подписки:
class SubscriptionsController < ApplicationController
def new
@subscription = Subscription.new
end
def create
# raise 'a'
@subscription = Subscription.new(params[:subscription].permit(:stripe_card_token))
@subscription.user = current_user
if @subscription.save_with_payment(params[:plan]) #(current_user)
redirect_to @subscription, :notice => "Thank you for subscribing!"
else
render :new
end
end
def destroy
end
def show
customer_token = current_user.subscription.try(:stripe_customer_token)
@charges = customer_token ? Stripe::Charge.all(customer: customer_token) : []
@cards = customer_token ? Stripe::Customer.retrieve(customer_token).cards : []
end
end
модель подписки
class Subscription < ActiveRecord::Base
belongs_to :user
validates_presence_of :user_id #it should be always compulsary
# attr_accessible :plan
attr_accessor :stripe_card_token
def save_with_payment(plan)
if valid?
customer = Stripe::Customer.create(description: 'subscription', plan: plan, card: stripe_card_token)
self.stripe_customer_token = customer.id
save!
end
rescue Stripe::InvalidRequestError => e
logger.error "Stripe error while creating customer: #{e.message}"
errors.add :base, "There was a problem with your credit card."
false
end
end