1

私のレールアプリには何百万ものレコードがあり、mysql によるページネーションを使用する必要がありますが、「引数の数が間違っています (3 対 2)」というエラーが表示されます。私のSQL構文

 @tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all

誰でも親切にこれを手伝ってください。よろしくお願いします。

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]) 
    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 '%text%' AND user_loc LIKE '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 '%text%' AND ( ((longitude BETWEEN min_lng and max_lng) AND (latitude BETWEEN min_lat and max_lat)) OR (user_loc LIKE 'paramas') ) order by id desc"
         else
           return   @sql="Select * from  tweets where tweet_text LIKE  '%text%'"
         end    

    end

tweets_controller の私のコード

class TweetsController < ApplicationController

include CoordinatesHelper
  def search
    render 'tweets/search'
  end


  def index

   # include CoordinatesHelper
    sql=query
    @tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all
    #render 'tweets/index'
  end
end

@tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all. この行でエラーが発生しています 誰か助けてください wat sd error 。よろしくお願いします

4

1 に答える 1

1

paginate_by_sqlSQL クエリとオプション ハッシュの 2 つの引数を受け入れます。SQL サニテーションを使用する場合は、次のように、SQL クエリ テンプレートとパラメーターを単一の配列で送信する必要があります。

@tweets=Tweets.paginate_by_sql([sql, @page], :per_page => @per_page ).all

編集

私の悪い点 - @page は SQL サニタイザーのパラメーターだと思っていました。

とにかく、次のオプションを使用してページを送信する必要があります。

@tweets=Tweets.paginate_by_sql(sql, :page => @page, :per_page => @per_page ).all
于 2013-07-24T09:24:40.303 に答える