-1

私の Rails アプリでは、条件付き検索フォームを実装する必要があります。 tweets と 座標 という名前の 2 つのテーブルがありますが、出力には空白のページが表示され、dis で行き詰まっています。私の座標コントローラー

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.find("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 'params[:show]' 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 'params[:show]') ) order by id desc"
         else
           return   sql="Select * from  tweets where tweet_text LIKE  '%text%'"
         end    

    end
  end     

私の Tweets_controller クラス TweetsController < ApplicationController

include CoordinatesHelper
  def search
    render 'tweets/search'
  end


  def index

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

検索ボタンのビュー コード

<%=form_tag({controller: 'tweets', action:'index'},  method: "get") do %>
<%=label_tag(:search, "Search for:") %>
<%=text_field_tag(:text) %>
<%=label_tag(:show, "Show for:") %>
<%=text_field_tag(:show) %>
<%= submit_tag( "GO" ) %>
<% end %>

結果を表示するための私のビューコード

<%= will_paginate @tweets %>
<% @tweets.each do |tweets| %>

<ul>

  <li><%= tweets.id %></li>
  <li><%= tweets.tweet_created_at %></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>

</ul>
<% end %>

しかし、何らかの理由で出力に空のページが表示され、何度か編集しようとしましたが、無駄でした。誰でも親切に私を助けてください

4

1 に答える 1

0

クエリメソッドでは、ファインダーメソッドを書きましたが、そこにモデル名ではなくテーブル名を書き込んでいます。ファインダーはモデル名で動作し、次のように書きます。

クエリメソッドでこれを置き換えます:

@a=Coordinates.find("city=?", params[:show])

これとともに :

@a=Coordinate.find("city=?", params[:show])

モデル名は、構成を変更しない限り、常に単数形のままであるためです。これであなたの params[:show] に問題があると思います。「params[:show]」の結果を貼り付けてください

それが役立つことを願っています。ありがとう

于 2013-07-25T12:44:08.837 に答える