小编par*_*rov的帖子

RSpec设置会话对象

我正在尝试从我的控制器规范中设置会话对象.

it 'use invalid coupon' do
  session[:coupon] = 'abcd'      
  Service.any_instance.stub(:validate_coupon).with(session[:coupon]).and_return('abcd')

  get :index
  expect(flash[:coupon__notice]).to be nil
end
Run Code Online (Sandbox Code Playgroud)

但是当我检查会话而不是@coupon对象时,我得到一个包含字符串'coupon'的@data,并且测试失败.

session rspec ruby-on-rails object

32
推荐指数
3
解决办法
3万
查看次数

Heroku Godaddy裸域

我有一个Heroku应用程序,我添加了一个CNAME(www到herokuapp),将它从GoDaddy重定向到Heroku.现在我正在努力管理裸域.

这是来自Heroku的文档.

裸域(也称为裸域或顶点域,例如mydomain.com)必须使用DNS A记录.要设置根域,请使用DNS管理工具为以下每个地址添加单独的A记录:

75.101.163.44
75.101.145.87
174.129.212.2
Run Code Online (Sandbox Code Playgroud)

使用"host"命令检查DNS是否配置正确:

$ host example.com
example.com has address 75.101.163.44
example.com has address 75.101.145.87
example.com has address 174.129.212.2
Run Code Online (Sandbox Code Playgroud)

我还从GoDaddy主菜单激活了转发.

好吧,如果我尝试使用我的域名托管example.com,一切正常.但是,当我尝试使用浏览器时,我得到了这个:

Heroku | 没有这样的应用程序该主机名没有配置应用程序.也许应用程序所有者已将其重命名,或者您输入了错误的URL

我也尝试使用该命令,heroku domains:add yourdomain.com 但这会创建我的应用程序的第二个实例,它不会将其重定向到完整的域www

dns heroku

22
推荐指数
1
解决办法
2万
查看次数

Poltergeist Stripe checkout.js

我正在尝试在我的Rails应用程序中测试Stripe checkout弹出窗口(http://www.stripe.com/checkout).

我使用的是Capybara + selenium-driver,一切运转良好.加载页面后,checkout.js会添加一个iframe,然后我就可以访问它了

within_frame('stripe_checkout_app') do
 do something
end
Run Code Online (Sandbox Code Playgroud)

现在,切换到Poltergeist,我收到此错误:

失败/错误:within_frame('stripe_checkout_app')执行Capybara :: Poltergeist :: FrameNotFound:找不到框架'stripe_checkout_app'.

如果我检查页面,那就没有iframe.所以我认为这个脚本

<script type="text/javascript" src="https://checkout.stripe.com/checkout.js"></script>

我用Poltergeist运行测试时没有加载.

更新

我尝试用Capybara-webkit运行测试,结果相同.

Failure/Error: Capybara.within_frame('stripe_checkout_app') do
 Capybara::Webkit::InvalidResponseError:
   Unable to locate frame.
Run Code Online (Sandbox Code Playgroud)

我也试着等了半分钟!同

sleep 30
Run Code Online (Sandbox Code Playgroud)

这些是我的webmock设置:

RSpec.configure { |config|
WebMock.disable_net_connect!(allow_localhost: true)
 }
Run Code Online (Sandbox Code Playgroud)

更新2:

'stripe_checkout_app'是iframe的名称.

<iframe frameborder="0" allowtransparency="true" src="https://checkout.stripe.com/v3" name="stripe_checkout_app" class="stripe_checkout_app" style="z-index: 9999; display: none; background-color: transparent; border: 0px none transparent; overflow-x: hidden; overflow-y: auto; visibility: visible; margin: 0px; padding: 0px; -webkit-tap-highlight-color: transparent; position: fixed; left: 0px; top: 0px; width: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara stripe-payments poltergeist

7
推荐指数
1
解决办法
1564
查看次数

Rails从控制器渲染部分

我试图从控制器中将不同的部分渲染到我的索引视图中,具体取决于我收到的参数.我的控制器内部有一个简单的除非条件来检查参数

def index
 unless params[:check].nil?
  render :partial => /layout/check
 else
  render :partial => /layout/not_check
 end
end
Run Code Online (Sandbox Code Playgroud)

我将文件_check.html.erb和not_check.html.erb放入文件夹布局/

现在,我如何在索引视图中显示部分内容?目前,我可以将部分单独可视化为单个视图,但不能在请求的视图内部.

controller ruby-on-rails partial

6
推荐指数
1
解决办法
2万
查看次数

rails link_to控制器动作

我在我的主页上显示了4张图片,当用户点击其中一张图片时,我想更改一个参数:在我的数据库中询问.

在我看来,我补充道

<%= link_to image_tag(friends.picture), {:controller => "static_pages", :action => "recomend", :id => friends.user_id} %>
Run Code Online (Sandbox Code Playgroud)

在我有的Static_Pages_Controller中

def recomend
  a = Friends.find_by_user_id(params[:id])
  a.update_attribute(:asked, true)
end
Run Code Online (Sandbox Code Playgroud)

并在routes.rb

resources :static_pages do
 resources :recomend
end
Run Code Online (Sandbox Code Playgroud)

但当我点击它时,服务器刷新我的家(为什么?!)并在我看到的服务器日志中

Started GET "/auth/failure?action=recomend&controller=static_pages&id=101" for 127.0.0.1 at 2012-11-17 19:59:25 +0100.
Run Code Online (Sandbox Code Playgroud)

action controller ruby-on-rails link-to

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