2

在我的 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'”。任何人请帮助我如何解决这个问题,在此先感谢

4

2 回答 2

2

我有几点意见:

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

    if condition
      code
    end
    
  • where 返回一个 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
    
于 2013-07-27T10:20:49.077 回答
1

这条线似乎是问题所在:

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

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

于 2013-07-27T10:51:15.127 回答