Полоса | Нужна помощь в настройке приложения RubyRails Tutorial - PullRequest
0 голосов
/ 15 июня 2019

Итак, я пытаюсь настроить этот пример https://stripe.com/docs/recipes/variable-amount-checkout

Я использую версию Debian 8 Rails: 5.2.3 Версия Ruby: 2.6.3 (x86_64-linux)

Iя хочу использовать SQLite, который должен быть параметром по умолчанию

Вот что я делаю, я нахожусь в своем домашнем каталоге и хочу создать новый проект.

Я делаю

rails new stripetest

, что завершается, затем я делаю cd stripetest

nano Gemfile

и иду до конца, добавляем новую строку, вставьте gem 'stripe', добавьте еще одну новую строку, вставьте gem 'jquery-rails', затем сохраните ее, затем я сделаю bundle install

Это работает, я получаю "Bundle complete!"и теперь, глядя на учебник Stripe, сделайте первый шаг, пока я все еще в ~ / stripetest

nano config/initializers/stripe.rb

Я вставляю в него 5 строк кода и сохраняю его

Далее я запускаю rails g controller charges new create, как мне подсказывают, в ~ / stripetest напрямую, и это успешно.

Теперь в руководстве рассказывается, что я должен отредактировать "rout.rb" ", заменив любой Rails-сгенерированные маршруты для сборов с resources :charges "

Так я делаю cd config, nano routes.rb, тогда я вижу, что уже есть

Rails.application.routes.draw do
  get 'charges/new'
  get 'charges/create'
  # For details on the DSL available within this file, see http://guides.r$
end

Так я заменяю

  get 'charges/new'
  get 'charges/create'

с resources :charges и сохраните его.мой файл rout.rb теперь выглядит следующим образом:

Rails.application.routes.draw do
  resources :charges
  # For details on the DSL available within this file, see http://guides.r$
end

, затем я cd .. выхожу из директории config

. Теперь я перехожу к «Создать форму оплаты истраница подтверждения », часть этого урока, за которой я следую

Я делаю nano app/views/charges/new.html.erb, стираю 2 строки в этом файле, копирую и вставляю первые 15 строк кода в примере, затем сохраняю его

Затем я делаю nano app/views/charges/create.html.erb, стираю 2 ранее существующие строки и вставляю 3 строки кода, которые он мне показывает, и сохраняю их.

Теперь я перехожу к части «Определить JavaScript»этот урок

Я делаю nano app/views/charges/new.html.erb, добавляю новую пустую строку, затем копирую и вставляю дополнительные 14 строк кода, затем добавляю новую пустую строку, затем копирую и вставляю 23 строки кода, которые мне показываетзатем сохраните его.

Я понял, что первые 14 строк кода, которые он хочет добавить, имеют </script> в конце.После того, как это вставлено, мне нужно было удалить </script>, затем вставить последние 23 строки кода под начальные 14 строк, а затем в самом конце завершить его с помощью </script> внизу файла или же пожертвоватьJavaScript-код кнопки не будет работать должным образом.

Теперь у него есть еще 4 строки кода, которые он хочет, чтобы я добавил в app / views / new.html.erb, поэтому я делаю nano app/views/new.html.erb и вставляю его, затем сохраняюit.

После этого я перехожу к части «Write the controller»

Я делаю nano app/controllers/charges_controller.rb и вижу некоторый код, который уже там.

class ChargesController < ApplicationController
  def new
  end

  def create
  end
end

LookingВозвращаясь к коду в учебнике, я вижу, что

def new
end

не трогается, поэтому я спускаюсь, чтобы определить def, нажимаю ввод, чтобы создать новую пустую строку под ним, и копирую и вставляю все, покапоследняя строка в примере кода урока для этого, сохраняя ранее существовавший последний до «конца» и сохраняйте его

Вот как выглядит мой app / controllers / char_controller.rb после того, как ясделал это

class ChargesController < ApplicationController
  def new
  end

  def create
  @amount = params[:amount]

  @amount = @amount.gsub('$', '').gsub(',', '')

  begin
    @amount = Float(@amount).round(2)
  rescue
    flash[:error] = 'Charge not completed. Please enter a valid amount in USD ($).'
    redirect_to new_charge_path
    return
  end

  @amount = (@amount * 100).to_i # Must be an integer!

  if @amount < 500
    flash[:error] = 'Charge not completed. Donation amount must be at least $5.'
    redirect_to new_charge_path
    return
  end

  Stripe::Charge.create({
    amount: @amount,
    currency: 'usd',
    source: params[:stripeToken],
    description: 'Custom donation',
  })

  rescue Stripe::CardError => e
    flash[:error] = e.message
    redirect_to new_charge_path
  end
end

Теперь, когда это сделано, яВернитесь к уроку и увидите, что я выполнил все, что он от меня хочет, теперь осталось только проверить его.

Во-первых, мне нужно добавить переменные окружения, чтобы они работали правильно.Это два тестовых ключа, предоставленных нам.и перезагрузите виртуальную машину, чтобы убедиться, что они вступили в силу.

После того, как я снова вошел в систему, я делаю cd stripetest и

bundle exec rails s -b 0.0.0.0

для проверкиit.

Я получаю следующий вывод консоли

=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

Итак, я открываю веб-браузер, перехожу к http://[Server IP]: 3000 / и вижу «YayВы на Рельсах!сообщение

Затем я перехожу на http://[Server IP]: 3000 / сборов / новых, как в учебном пособии говорит мне

Когда я пытаюсь ввести сумму в текстовое поле, скажем, «50», затем нажимаю кнопку «пожертвовать», я получаю сообщение об ошибке

«Stripe :: InvalidRequestError в ChargesController # create Invalid sourceобъект: должен быть словарем или непустой строкой. См. документацию API по https://stripe.com/docs'"

и там написано «Извлеченный источник (около строки # 26):»

24:  end
25:
26:  Stripe::Charge.create({
27:    amount: @amount,
28:    currency: 'usd',
29:    source: params[:stripeToken],

Вв этот момент я не знаю, что делать, я не понимаю, в чем тут дело. Я пытался несколько раз, меняя то, что я делал для chargecontroller.rb и для файлов /config/routes.rb, но могу 'Кажется, он работает неправильно.

Возможно, у меня что-то не так с файлом /config/routes.rb или с файлами app / controllers / char_controller.rb, но я не уверен, что

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...