【发布时间】:2014-09-18 22:10:08
【问题描述】:
更新到 Rails 4.1 后,我在一个新项目中遇到了 Cucumber 和 Capybara 的一个有趣问题。
在视图中,我放置了一些缩略图。用户应该单击缩略图链接以接收有关他选择的人的更多信息。通过 AJAX 的魔力,信息会出现在缩略图下方。这是我在视图中的操作方式:
<%= link_to( image_tag( ... ), "/controller/action.js&person=#{@person.nickname}", id: @person.thumb_id , remote: true) %
对于这种情况,控制器遵循通常的程序
respond_to do format.js end
等等。
在浏览器中完美运行,我喜欢它。
但是,Cucumber 和 Capybara 的工作并不顺利。这是让我很头疼的 Capybara 台词:
When(/^I click on one of the portraits to display the person's stuff$/) do
click_link("jack_sparrow_THUMB") # @user.thumb_id
end
使用 Cucumber 运行场景,我收到上述语句的错误消息:
Security warning: an embedded <script> tag on another site requested protected
JavaScript. If you know what you're doing, go ahead and disable forgery protection
on this action to permit cross-origin JavaScript embedding.
(ActionController::InvalidCrossOriginRequest)
问题一定与此有关
http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html
看看提供的 CROSS_ORIGIN_JAVASCRIPT_WARNING ... :(
我能做些什么来让我的测试再次运行,而无需降级到
【问题讨论】:
-
当前主机和AJAX调用的主机是否相同?
-
它是 localhost:3000;但也有一些供应商的东西在某处涉及。
标签: ruby-on-rails ajax capybara capybara-webkit