在我的 Rails 应用程序中,我有两个控制器,即坐标控制器和推文控制器。我面临的问题是我有一些定义及其两个控制器都将使用的参数。也就是说,坐标控制器返回的值将被推文控制器使用。有没有办法解决这个问题?
我的坐标控制器代码
class CoordinatesController<ApplicationController
def paramas(b)
@b = params[:show]
return @b
end
def coor(latitude,longitude)
@latitude=0
@longitude=0
end
def search
@a=Coordinates.where(city: params[:show]).take
if(params[:show]== a.city) then
@latitude= a.latitude
@longitude=a.longitude
end
if(@latitude=0 && @longitude=0) then
return @sql="Select * from tweets where tweet_text LIKE '%search%' AND user_loc LIKE 'a.paramas' order by id desc"
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
return @sql = "Select * from tweets where tweet_text LIKE '%search%' AND ( ((longitude BETWEEN min_lng and max_lng) AND (latitude BETWEEN min_lat and max_lat)) OR (user_loc LIKE 'a.paramas') ) order by id desc"
else
return @sql="Select * from tweets where tweet_text LIKE '%search%'"
end
end
end
# a= CoordinatesController.new
结束我的 tweets_controller.rb
class TweetsController<ApplicationController
require 'coordinates_controller.rb'
#require 'models/coordinates.rb'
def index
#include 'coordinates_controller.rb'
a= CoordinatesController.new
@sql=a.search
@tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all
end
end
我知道这段代码是一团糟。我不知道如何使用辅助方法和模块。谁能告诉我如何排序,以便我可以在多个控制器中使用某些方法,以便我可以使用返回的值?
我在 Rails 指南和教程中进行了搜索。我还看到了其他教程,但找不到解决方案。任何人都请帮我解决这个问题。提前致谢。