我正在运行一个Rails应用程序,该应用程序将Ruby版本升级到2.5.1和2.6.0之后也停止了工作。我注意到这与在控制器的回调中传递一个块有关:
prepend_before_filter only: [:create, :destroy] { request.env["devise.skip_timeout"] = true }
失败,并显示错误:
syntax error, unexpected '{', expecting keyword_end
...ter only: [:create, :destroy] { request.env["devise.skip_tim
我的设置是:
devise (4.6.1)
rails 5.0.7
ruby 2.5.1
pundit 2.0.1
我将使用的Ruby版本升级到了2.6.0,出现了问题,然后下降到2.5.1,问题仍然存在
我还发现了这两个线程似乎在谈论类似的问题:https://github.com/plataformatec/devise/issues/4703 Rails 4 before_action, pass parameters to invoked method
我更新了Devis和Pundit,但没有任何运气:\
答案 0 :(得分:2)
我建议使用prepend_before_filter
替换不推荐使用的prepend_before_action
并使用括号
prepend_before_action(only: [:create, :destroy]) { request.env["devise.skip_timeout"] = true }
或使用do ... end
块语法
prepend_before_action only: [:create, :destroy] do
request.env["devise.skip_timeout"] = true
end
答案 1 :(得分:0)
对于我来说,添加括号 ():
prepend_before_filter(only: [:create, :destroy]) { request.env["devise.skip_timeout"] = true }