我正在尝试从我的控制器规范中设置会话对象.
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,并且测试失败.
我有一个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
我正在尝试在我的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) 我试图从控制器中将不同的部分渲染到我的索引视图中,具体取决于我收到的参数.我的控制器内部有一个简单的除非条件来检查参数
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放入文件夹布局/
现在,我如何在索引视图中显示部分内容?目前,我可以将部分单独可视化为单个视图,但不能在请求的视图内部.
我在我的主页上显示了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)