优先使用格式而不是 String#% rubocop

rub*_*ist 3 ruby rubocop

request_url ||= URI_FORMATS[:home_page] % {
          base_uri:     AppConfig.test_api['base_url'],
          end_point:    AppConfig.test_api['end_points']['home_page'],
          client_id:    AppConfig.test_api['client_id'],
        }
Run Code Online (Sandbox Code Playgroud)

为此,我收到了超过 String#% rubocop 错误的 Favor 格式。任何想法如何解决这个问题。我刚刚在这里解决了错误的原因

https://quynhcodes.wordpress.com/2017/03/29/string-interpolation-in-ruby/
Run Code Online (Sandbox Code Playgroud)

但我在这里没有使用任何字符串插值。

那么我们如何解决这个问题。?

3li*_*t0r 7

首先,这不是关于字符串插值,而是关于字符串格式。该rubocop红宝石风格指南说:

赞成使用sprintf及其别名format而不是相当神秘的String#%方法。

这将意味着改变

request_url ||= URI_FORMATS[:home_page] % {
  base_uri:  AppConfig.test_api['base_url'],
  end_point: AppConfig.test_api['end_points']['home_page'],
  client_id: AppConfig.test_api['client_id'],
}
Run Code Online (Sandbox Code Playgroud)

request_url ||= format(
  URI_FORMATS[:home_page],
  base_uri:  AppConfig.test_api['base_url'],
  end_point: AppConfig.test_api['end_points']['home_page'],
  client_id: AppConfig.test_api['client_id'],
)
Run Code Online (Sandbox Code Playgroud)