【问题标题】:Syntax error unexpected tSTRING_BEG语法错误意外 tSTRING_BEG
【发布时间】:2016-02-01 19:08:05
【问题描述】:

我正在尝试在 Rails.application.secrets 调用中调用参数,但出现语法错误。抱歉,如果答案很明显,我是 ruby​​ 新手。

这里是代码

  def sign_up_url_secret(secret_network)
    secret_key = Rails.application.secrets.'#{secret_network}'
    "#{Rails.application.secrets.platform_signup_url}?team_secret=#{secret_key}"
  end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2


    【解决方案1】:

    错误来自这个:

    secret_key = Rails.application.secrets.'#{secret_network}'
    

    你不能在 Ruby 中调用这样的方法。

    您可以使用public_sendsend 来做到这一点:

    def sign_up_url_secret(secret_network)
      secret_key = Rails.application.secrets.public_send(secret_network)
      "#{Rails.application.secrets.platform_signup_url}?team_secret=#{secret_key}"
    end
    

    【讨论】:

    • 永远不要"#{secret_network}"。如果你知道这个值是一个字符串(或者不关心它的类型),直接使用它:secret_network。如果您不确定它是否是一个字符串并且您需要它是一个字符串,请使用secret_network.to_s。仅当您想要将值插入到具有其他内容的字符串中时才使用字符串插值 (#{...}),就像在第三行中所做的那样。
    • @Jordan 感谢您指出这一点。更新了我的答案以反映这一点。
    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 2011-10-28
    • 2014-12-18
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多