小编Ste*_*eve的帖子

如何通过rspec测试控制器中更新的会话变量

我正在尝试使用rspec编写测试,测试会话变量是否已正确更改:

这是我要测试的GamesController的一部分:

def change_player
  if session[:player] == 0
    session[:player] = 1
  else
    session[:player] = 0
  end    
end
Run Code Online (Sandbox Code Playgroud)

这是我的game_spec.rb文件:

require "spec_helper"

describe GamesController do
 describe "#change_player" do
   it "should change player to 1" do
     session[:player] = 0

     get :change_player

     assigns(session[:player]).should == 1
   end
 end
end
Run Code Online (Sandbox Code Playgroud)

这是我运行测试时收到的错误消息:

Failures:

  1) GamesController#change_player should set player to 0
     Failure/Error: session[:player] = 0
     NameError:
       undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000103b3b0d8>
     # ./spec/features/game_spec.rb:6:in `block (3 levels) in <top (required)>'

Finished in 0.01709 seconds
1 example, …
Run Code Online (Sandbox Code Playgroud)

controller rspec ruby-on-rails

10
推荐指数
1
解决办法
7876
查看次数

Stripe Connect - 检索访问令牌

我正在尝试为rails 3.2.13 app设置Stripe Connect.我已将用户定向到Stripe并从Stripe接收了授权代码:

HTTP/1.1 302 Found
Location: http://localhost:3000/yourshop/stripe?scope=read_write&state=1234&code=AUTHORIZATION_CODE
Run Code Online (Sandbox Code Playgroud)

下一步是根据Stripe文档,通过access_token_url发出POST请求以接收access_token:

curl -X POST https://connect.stripe.com/oauth/token \
  -d client_secret=sk_test_code \
  -d code=AUTHORIZATION_CODE \
  -d grant_type=authorization_code
Run Code Online (Sandbox Code Playgroud)

我对curl没有任何经验是一个rails应用程序,我在Stripe API中找不到任何似乎这个POST请求包含在Stripe Gem中的内容:

宝石文件:

gem 'omniauth-stripe-connect'
gem 'stripe'
Run Code Online (Sandbox Code Playgroud)

模型

def save_with_stripe_account
  code = self.stripe_code
  customer = curl -X POST https://connect.stripe.com/oauth/token \
    -d "client_secret=ENV['STRIPE_SECRET_KEY']" \
    -d "code=code" \
    -d "grant_type=authorization_code"
  raise customer.inspect  
end
Run Code Online (Sandbox Code Playgroud)

错误:

syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('
Run Code Online (Sandbox Code Playgroud)

不确定是否只是错误的格式为rails中的curl或者是否需要使用其他东西.

curl ruby-on-rails stripe-payments

5
推荐指数
2
解决办法
2891
查看次数

如何访问服务对象中的devise sign_in

我正在尝试将一些代码移出控制器,并移入服务对象。如何从服务对象访问devise sign_in辅助方法。

class CompleteAccountRegistration

  def self.call(account_id, plan_id)
    @account = Account.find(account_id)
    self.create_user_account
    self.create_subscription(plan_id)
    sign_in(User.find(@account.owner_id))
  end
Run Code Online (Sandbox Code Playgroud)

我的测试中出现以下错误。

 NoMethodError:
   undefined method `sign_in' for CompleteAccountRegistration:Class
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

5
推荐指数
1
解决办法
426
查看次数

git diff没有显示所有更改

我几乎不好意思问,但是当我git diff在特定文件上运行时,它只显示前26行左右的变化.

是否有一个页面向下命令将显示其余的更改?

git git-diff

3
推荐指数
1
解决办法
1248
查看次数

嵌套在 content_tag 块内的 Content_tag 块 - 表单生成器

我正在尝试创建一个 Rails FormBuilder 来使用引导样式设置表单样式:

<div class="form-group has-error">
  <label for="exampleInputEmail1">Email address</label>
  <div class="input-group>
    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
    <span class="input-group-addon glyphicon glyphicon-user"></span>
  </div>
  <p class="help-block>can't be blank</p>
</div>
Run Code Online (Sandbox Code Playgroud)

当我只有一个 div 标签时,我就能让表单生成器工作(不包括传统引导表单的输入组)。我的问题是,我无法使用类为“input-group”的 div 获取嵌套的 content_tag ”才能正常工作。我尝试添加元素并将 content_tag 包装在捕获中,但无济于事。

class LargeFormBuilder < ActionView::Helpers::FormBuilder
  include ActionView::Helpers::TagHelper
  include ActionView::Helpers::CaptureHelper
  include ActionView::Helpers::TextHelper

  attr_accessor :output_buffer

  %w(text_field text_area email_field password_field).each do |form_method|
    define_method(form_method) do |*args|
      attribute = args[0]
      options = args[1] || {}
      options[:label] ||= attribute
      options[:class] ||= "form-control input-lg"
      label_text ||= options.delete(:label).to_s.titleize
      content_tag(:div, class: "form-group #{'has-error' …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails content-tag twitter-bootstrap

0
推荐指数
1
解决办法
5590
查看次数