rails 3'undefined method'在另一个方法中调用方法时

时间:2013-07-15 14:32:09

标签: ruby-on-rails

我的数据库中有两个名为坐标和推文的表,我需要执行搜索以从推文表中获取推文。由于这也需要来自坐标表的数据,我决定使用require然后创建一个对象,然后在另一个程序中调用另一个程序的函数。

我的coordinates_controller:

class CoordinatesController<ApplicationController
  def paramas(b)

    @b = params[:show]
    return @b

  end
  def coor(latitude,longitude)
    @latitude=0
    @longitude=0
  end

  def search(min_latitude,max_latitude,min_longitude,max_longitude,sql)
    @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
  end
My tweets_controller
require 'coordinates_controller.rb'
#require 'models/coordinates.rb'
class TweetsController<ApplicationController
  def show
#include 'coordinates_controller.rb'
    a= CoordinatesController.new
    @sql=a.search(min_latitude,max_latitude,min_longitude,max_longitude,sql)
    @tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all
  end
end
my view code for the search button
<%= form_tag({controller: "tweets", action:"show" }, method: "get") do  %>
<%= label_tag(:search, "search for:") %>
<%= text_field_tag(:show) %>
<%= submit_tag("Search") %>
<% end %>

<%= form_tag({controller: "coordinates", action:"search" }, method: "get") do  %>
<%= label_tag(:search, "search for:") %>
<%= text_field_tag(:search) %>
<%= submit_tag("Search") %>
<% end %>
My view code for  displaying results
<%= will_paginate @tweets %>
<% @tweets.each do |tweets| %>
<ul>
<li><%= tweets.id %></li>
<li><%= tweets.tweet_created_at %></li>
<li><%= tweets.tweet_id %></li>
<li><%= tweets.tweet_source %></li>
<li><%= tweets.tweet_text %></li>
<li><%= tweets.user_id %></li>
<li><%= tweets.user_name %></li>
<li><%= tweets.user_sc_name %></li>
<li><%= tweets.user_loc %></li>
<li><%= tweets.user_img %></li>
<li><%= tweets.longitude %></li>
<li><%= tweets.latitude %></li>
<li><%= tweets.place %></li>
<li><%= tweets.country %></li>
<% end %>
</ul>

我收到错误未定义的方法min_latitude。我无法弄清楚导致错误的原因。

1 个答案:

答案 0 :(得分:0)

当你调用方法时search Ruby不知道min_latitude在这里的含义

@sql=a.search(min_latitude,max_latitude,min_longitude,max_longitude,sql)