在我的rails应用程序中,我有两个名为坐标和推文的表。要获取查询,条件在坐标控制器中决定并在推文控制器中执行。它基本上是一个推文搜索表来获取匹配的推文。 。我正在使用find_by_sql方法。 我的Coordinates_controller
class CoordinatesController < ApplicationController
def home
end
# def paramas(b)
#
# @b = params[:show]
# return @b
#end
#def coor(latitude,longitude)
# @latitude=0
#@longitude=0
#end
def query
a = Coordinates.where(city: params[:show])
b = a.first
if a.count == 1
latitude = b.latitude
longitude= b.longitude
end
if(latitude=0 && longitude=0) then
sql="Select * from tweets where tweet_text LIKE '%text%' AND user_loc LIKE 'show' order by id desc LIMIT 30"
else if (latitude!=0 && longitude!=0)
min_lat = latitude - 1.0
max_lat = latitude + 1.0
min_lng = longitude - 1.0
max_lng = longitude + 1.0
sql = "Select * from tweets where tweet_text LIKE '%text%' AND ( ((longitude BETWEEN min_lng and max_lng) AND (latitude BETWEEN min_lat and max_lat)) OR (user_loc LIKE 'show') ) order by id desc LIMIT 30"
else
sql="Select * from tweets where tweet_text LIKE '%text%' LIMIT 30"
end
end
end
#end
#end
我的tweets_controller
class TweetsController < ApplicationController
include CoordinatesHelper
def search
render 'tweets/search'
end
def index
# include CoordinatesHelper
# sql=query
@tweets=Tweets.find_by_sql(sql)
#render 'tweets/index'
end
end
sql变量来自coordinates_controller,由tweets控制器决定。但由于某些原因,tweets_controller无法识别坐标控制器内的sql变量。它说“未定义的方法或本地变量sql”。感谢任何帮助
答案 0 :(得分:1)
sql
定义中的局部变量CoordinatesController#query
对定义之外的任何位置都不可见。即使您将CoordinatesController
的实例显示(通过将其转换为实例变量),TweetsController
也无法看到它。