LoginSignup
0
0

More than 5 years have passed since last update.

railsでリクエストが2回飛んでハマった話(超初心者向け)

Last updated at Posted at 2019-01-08

はじめに

Ruby on Railsでwebアプリを作成している最中にしょーもないことでハマったのでメモしておきます。
ちょー初心者向けなのでご了承ください。

状況

webアプリ内のあるページにアクセスして見るとDBから取得したレコードを表示するはずのところが、まっさらなページが表示されていました。
そこでサーバのログを見てみると

Started GET "/datings/32" for 119.106.25.164 at 2019-01-08 12:28:23 +0000
   (0.1ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
  ↳ /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:13
Processing by DatingsController#show as HTML
  Parameters: {"id"=>"32"}
  Dating Load (0.2ms)  SELECT  "datings".* FROM "datings" WHERE "datings"."id" = ? LIMIT ?  [["id", 32], ["LIMIT", 1]]
  ↳ app/controllers/datings_controller.rb:81
  Rendering datings/show.html.erb within layouts/application
  Spot Load (0.2ms)  SELECT "spots".* FROM "spots" INNER JOIN "dating_spots" ON "spots"."id" = "dating_spots"."spot_id" WHERE "dating_spots"."dating_id" = ?  [["dating_id", 32]]
  ↳ app/views/datings/show.html.erb:36
  Rendered datings/show.html.erb within layouts/application (22.2ms)
  Rendered layouts/_header.html.erb (0.7ms)
  Rendered layouts/_footer.html.erb (0.3ms)
Completed 200 OK in 367ms (Views: 326.1ms | ActiveRecord: 1.8ms)


Started GET "/datings/class=%22date-detail-pic%22" for 119.106.25.164 at 2019-01-08 12:28:24 +0000
Processing by DatingsController#show as HTML
  Parameters: {"id"=>"class=\"date-detail-pic\""}
  Dating Load (0.1ms)  SELECT  "datings".* FROM "datings" WHERE "datings"."id" = ? LIMIT ?  [["id", 0], ["LIMIT", 1]]
  ↳ app/controllers/datings_controller.rb:81
Completed 404 Not Found in 2ms (ActiveRecord: 0.1ms)

Started GETが2回??
なぜかコントローラのshowメソッドが2回呼ばれているようでした。。。
なおかつ2回目のGETではなぜか"/datings/class=%22date-detail-pic%22"にアクセスしていました。

解決までの道のり

binding.pryで取得されているレコードを確認したり、chromeで検証から生成されたhtmlを見たり、showメソッドにlogger.debugを入れたりと色々試しました。

logger.debugでshowメソッド呼び出し回数を確認したところ、実はshowメソッドが2回呼ばれていない。。コントローラよりviewがおかしいのかなと見返してみると、画面に表示する部分をこのように書いていました。

view.html.erb
<% @dating.thmeme %>
#正しくは <%= @dating.thmeme %>

こんな初歩的なことでした。
なぜshowメソッドが2回呼ばれたのかは分かっていませんが、一応解決しました。
もし同じような方がいたら参考にしてもらえればと。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0