私は、ユーザーが地理的な場所(特定のアドレス)を使用して求人情報を検索できるようにするRailsでアプリケーションを構築しようとしています。私は 'ジオコーダー'宝石を使用しています。Ruby on Rails Geocoder Gem。近くの検索結果が混乱したデータを返す
宝石「ジオコーダ」
私は成功し Job.near(「シドニー」、10)を使用して、レールのコンソールを使って検索することができますし、それが配列に私のデータベースからのリストを返します。
2.2.2 :001 > Job.near('sydney', 10)
Job Load (97.5ms) SELECT jobs.*, 6371.0 * 2 * ASIN(SQRT(POWER(SIN((-33.8688197 - jobs.latitude) * PI()/180/2), 2) + COS(-33.8688197 * PI()/180) * COS(jobs.latitude * PI()/180) * POWER(SIN((151.2092955 - jobs.longitude) * PI()/180/2), 2))) AS distance, MOD(CAST((ATAN2(((jobs.longitude - 151.2092955)/57.2957795), ((jobs.latitude - -33.8688197)/57.2957795)) * 57.2957795) + 360 AS decimal), 360) AS bearing FROM "jobs" WHERE (jobs.latitude BETWEEN -33.958751860591875 AND -33.77888753940813 AND jobs.longitude BETWEEN 151.10098469477293 AND 151.31760630522706 AND (6371.0 * 2 * ASIN(SQRT(POWER(SIN((-33.8688197 - jobs.latitude) * PI()/180/2), 2) + COS(-33.8688197 * PI()/180) * COS(jobs.latitude * PI()/180) * POWER(SIN((151.2092955 - jobs.longitude) * PI()/180/2), 2)))) BETWEEN 0.0 AND 10) ORDER BY distance ASC
=> #<ActiveRecord::Relation [#<Job id: 73, title: "Dog walkingn", description: "walk my dog everyday", price: "$25", user_id: "24", timeframe: "daily", created_at: "2016-07-29 05:50:00", updated_at: "2016-07-29 05:50:00", location: nil, job_type_id: "3", street_number: "100", street: "Pitt Street", suburb: "Sydney", state: "NSW", postcode: "2000", country: "Australia", longitude: 151.2092955, latitude: -33.8688197>]>
しかし、私は、コントローラでこれを行うと、私が得るすべてがあり、試してみて、ビュー(jobs.html.erb)にデータを送信する:ここ
#<Job::ActiveRecord_Relation:0x007fd66475abd8>
は私のコントローラのコードです:
DEF位置
if params[:location].present?
jobs = Job.near(params[:location],
params[:proximity])
@jobs = jobs
else
@noJobs = 'there is nothing nearby'
@jobs = nil
end
端
と私の見解のみで構成されています。私はそれだけで誰でもに説明することができ
ActiveRecord::StatementInvalid in Jobs#location
を返すビューで
<%[email protected][0].title%>
を実行する場合(jobs.html.erb)
<%= @jobs %>
私は何が起こっているのですか、どのようにデータにアクセスできますか? 実際にアクティブなレコード関係は何を意味していますか?
私はまだコーディングに新しく、これは私を完全に困惑させました。私はどこでも答えを見つけることができません。 本当にありがとうございました!
あなたがコントローラに '@のjobs.count'を実行できますか? –
railsコンソールで@ jobs.lengthを実行すると、jobs.countが動作しておらず、コントローラでも動作していません。( – pauly