条纹在设置RubyRails教程应用程序方面需要帮助

时间:2019-06-15 01:17:30

标签: ruby-on-rails ruby

因此,我尝试设置此示例https://stripe.com/docs/recipes/variable-amount-checkout

我正在使用Debian 8 Rails版本:5.2.3 Ruby版本:2.6.3(x86_64-linux)

我想使用应该作为默认选项的SQLite

这就是我的工作,我在主目录中,想要创建一个新项目。

我愿意

rails new stripetest

完成后,我就做cd stripetest

nano Gemfile

并一直进行到最后,添加新行,粘贴gem 'stripe'添加另一行,粘贴gem 'jquery-rails',然后保存,然后执行bundle install < / p>

那行得通,我得到了“捆绑包!”信息,现在看看Stripe的教程,在我仍处于〜/ stripetest的情况下进行第一步

nano config/initializers/stripe.rb

我将5行代码粘贴到其中,然后保存

接下来,我会在〜/ stripetest中直接运行rails g controller charges new create,就像它告诉我那样,成功了。

现在,本教程告诉我编辑“ routes.rb”“用resources :charges替换所有Rails生成的收费路线”

所以我做cd confignano 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

并保存。我的routes.rb文件现在看起来像这样

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

然后我执行cd ..退出配置目录

现在,我进入我正在关注的本教程的“创建付款表格和确认页面”部分

我做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并将其粘贴,然后保存。

在此之后,我进入“写控制器”部分

我做nano app/controllers/charges_controller.rb并看到一些已经存在的代码。

class ChargesController < ApplicationController
  def new
  end

  def create
  end
end

回头看教程中的代码,我可以看到

def new
end

没有被触及,因此我去定义def create,按Enter在其下创建一个新的空白行,然后复制并粘贴所有内容,直到该教程的代码示例的最后一行为止,将先前存在的最后一行保留为“结束”,然后保存

完成后,这是我的app / controllers / charges_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

现在已经完成了,我回看教程,发现我已经完成了我想做的所有事情,现在剩下要做的就是测试它。

首先,我需要添加环境变量,以便其正常运行。这是给我们的两个测试键 PUBLISHABLE_KEY = pk_test_VgxsElpJEyhyry0JhTjAas4x SECRET_KEY = sk_test_xQHXBbxUcFeqysHHC9DEThUA

我将它们添加到/ etc / environment中并且也这样做

export PUBLISHABLE_KEY=pk_test_VgxsElpJEyhyry0JhTjAas4x export SECRET_KEY=sk_test_xQHXBbxUcFeqysHHC9DEThUA

并重新启动VM以确保它们已生效。

重新登录后,我将执行cd stripetest

bundle exec rails s -b 0.0.0.0

进行测试。

我得到以下控制台输出

=> 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 /,然后看到“是的!您在Rails上!”消息

然后我按照教程中的说明转到http://[Server IP]:3000 / charges / new

当我尝试在文本框中输入金额时,说“ 50”,然后单击“捐赠”按钮,我得到一个错误提示

“ ChargesController#create中的“ Stripe :: InvalidRequestError” 无效的源对象:必须是字典或非空字符串。请参阅https://stripe.com/docs'“

上的API文档

并显示“提取的来源(第26行附近):”

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

在这一点上,我不知道该怎么办,也不知道我在哪里出错了。我尝试了多次,更改了我对chargescontroller.rb和/config/routes.rb文件所做的操作,但似乎无法使其正常工作。

我的/config/routes.rb文件或我的app / controllers / charges_controller.rb文件可能有问题,但我不确定是什么

0 个答案:

没有答案