После обновления до 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
и Т. Д.
Прекрасно работает в браузере, и мне это нравится.
Однако огурец и капибара работают не так гладко. Вот строчка 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 ... :(
Могу ли я что-нибудь сделать, чтобы мои тесты снова запускались без перехода на rails ‹4.1 или даже отключения защиты от подделки запросов в целом? Помощь будет очень признательна.