У меня была такая же проблема, но со страницами, которые были кэшированы. Страницы буферизировались с использованием устаревшего токена подлинности и всех действий с использованием методов post / put / delete, которые распознавались как попытки подделки. Ошибка (422 Unprocessable Entity) была возвращена пользователю.
Решение для Rails 3:
Добавить:
skip_before_filter :verify_authenticity_token
или, как указано в sagivo в Rails 4, добавить:
skip_before_action :verify_authenticity_token
На страницах, которые делают кеширование.
Как заметил @toobulkeh, это не является уязвимостью для :index
, :show
действий, но будьте осторожны, используя это для :put
, :post
действий.
Например:
caches_page :index, :show
skip_before_filter :verify_authenticity_token, :only => [:index, :show]
Ссылка: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html
Примечание, добавленное barlop - Rails 4.2 устарел skip_before_filter в пользу skip_before_action https://guides.rubyonrails.org/4_2_release_notes.html "Семейство методов * _filter удалено из документации. Их использование не рекомендуется в пользу семейства методов * _action"