如何替换:if和:除非rails 5.2的选项

T.K*_*Kul 12 ruby-on-rails

在application_controller.rb中:4

class ApplicationController < ActionController::Base
  before_action :prepare_meta_tags, if: "request.get?"
Run Code Online (Sandbox Code Playgroud)

Rails 5.1警告

DEPRECATION WARNING: Passing string to be evaluated in :if and :unless conditional options is deprecated and will be removed in Rails 5.2 without replacement. Pass a symbol for an instance method, or a lambda, proc or block, instead. (called from <class:ApplicationController> at MYSITE/app/controllers/application_controller.rb:4)
Run Code Online (Sandbox Code Playgroud)

题:

  1. 什么是选项:if和:除非在该子句中重写
  2. 以及如何重写以符合rails 5.2的要求

我有if,除非我的项目全部完成.需要建议.谢谢

kha*_*maa 28

首先,不要担心他们不会弃用:if和:除非.他们不赞成将字符串传递给它.

在这种情况下,使用lambda会更好

class ApplicationController < ActionController::Base
  before_action :prepare_meta_tags, if: -> { request.get? }
...
end
Run Code Online (Sandbox Code Playgroud)

  • 现在不再弃用警告了.THKS. (2认同)