0

私の Rails アプリケーションには、tweets_controller と coordinate_controller という 2 つのコントローラーがあります。最終的なビューでは、つぶやき_controller の属性を、coordinates_controller の条件を使用して表示したいと考えています。私が直面している問題は、つぶやき_コントローラーが座標コントローラーの変数を知っている必要があることです。座標コントローラーの私のコード

def CoordinatesHelper.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) 
    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     

私の tweets_controller は、tweets_controller の定義「インデックス」を使用して、つぶやきテーブルの属性を表示するだけです。緯度、経度などの条件は、座標テーブルから取得されます。tweets_controller が座標テーブルの緯度を評価できる方法はありますか、経度を入力してから、ツイートを最終ビューに表示します。正確には、coordinates_controller には変数緯度、経度、都市、および検索ボタンに params[:show] があります。tweets_controller は、coordinates_controller の属性にアクセスできる必要があります。どうすればいいですか?

<%= @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

ここで必要なのは、次のように、Tweet モデルと Coordinate モデルの間のモデル レベルでの関連付けです。

class Tweet < ActiveRecord::Base
  has_one :coordinate
end

これは、ツイートに座標があることを示しています。

問題は、あるコントローラーから別のコントローラーへの変数へのアクセスに関するものではありませんが (親子コントローラーでない限り発生しないはずです)、モデル間の関連付けが適切に設定されていないことが問題です。

于 2013-08-02T10:03:28.113 に答える