首页 > 解决方案 > Rails if 语句使用包含?给出语法或字符串文字错误的方法

问题描述

在我的 RoR 应用程序中,我正在尝试创建一个方法,该方法将查看文本字段(正文)并在英国手机号码已被共享时向 slack 发布消息。我正在通过搜索07或出现在正文中任何位置的“+447”来测试英国手机号码。

  def contact_details_shared
    if self.body.include? '07' || self.body.include? '+447'
      slack_post(self)
    end
  end

当我尝试在 localhost(例如 rails s)中启动应用程序时,会出现以下错误:

syntax error, unexpected tSTRING_BEG, expecting keyword_then or ';' or '\n'

但我在这里看不到任何语法问题。

所以我也尝试了以下

  def contact_details_shared
    if ( self.body.include? '07' || self.body.include? '+447' )
      slack_post(self)
    end
  end

当我尝试在 localhost(例如 rails s)中启动应用程序时,会出现以下错误:

warning: string literal in condition

我对此感到惊讶,因为我的代码应该为每个 OR 条件(而不是字符串)返回一个布尔值。

所以......两个问题:1)我怎样才能让代码工作?2)我想有些解决方案比我的更优雅。非常欢迎提出建议!有任何想法吗?

标签: ruby-on-rails

解决方案


尝试:

if self.body.include?('07') || self.body.include?('+447')

我怀疑 ruby​​ 需要明确标识使用括号提供的参数(即'07'和)。'+447'


推荐阅读