语法错误“语法错误,意外的tFID,期待keyword_then或';'或'\ n'“检查对象的存在时

时间:2013-07-27 09:31:09

标签: ruby-on-rails-3

在我的Rails应用程序中,我需要检查对象是否存在,如果存在,我需要将该对象的纬度和经度属性分配给两个名为纬度和经度的外部变量。

my controller code 
      def query

      if ( Coordinates.where(city :params[:show]).exists?) equal? 1) then

                           a=Coordinates.where(city: params[:show])

                              latitude=a.latitude

                             longitude=a.longitude

                        end

但是当我运行程序在浏览器中我遇到语法错误,尽管我多次尝试更改语法我得到的错误是“语法错误,意外的tFID,期待关键字_then或';'或'\ n'“。任何人请帮助我如何解决这个问题,提前谢谢

2 个答案:

答案 0 :(得分:2)

我有几条评论:

  • 在Ruby中,if的语法通常是(没有那么)

    if condition
      code
    end
    
  • 返回ActiveRecord关联,因此它是一个集合,因此您无法调用a.latitude。试试Coordinates.where(city: params[:show]).first或类似的东西。

  • 您定义了一个名为equal?的方法吗?如果不是,则至少缺少.

  • if语句或多或少没用。

     def query
       a = Coordinates.where(city: params[:show])
       b = a.first
       if a.count == 1
         latitude = b.latitude
         longitude= b.longitude
       else
         # do something else
       end
     end
    

答案 1 :(得分:1)

这条线似乎是问题所在:

( Coordinates.where(city :params[:show]).exists?) equal? 1)

你到底想知道什么?在这种情况下,最好用文字向我们解释,因为你的代码看起来很混乱。 Ayonix有一个查询方法的工作示例,但我不确定该方法是否准确描述了您想知道的内容。