简体   繁体   中英

Rails action being called multiple times per request

I have a controller action that's being called three times per browser request. Any ideas? config/routes.rb and application_controller.rb are totally straightforward.

Code below,

config/routes.rb

Rails.application.routes.draw do
    root 'tiles#index'

+

controllers/tiles_controller.rb

class TilesController < ApplicationController
def index
  puts "this line prints three times in the console per request"
end

+

tiles/index.html.erb
<% if notice %>
  <p id="notice"><%= notice %></p>
<% end %>

<div id="tiles">
  <%= render "tile", tile: { type: "sam", id: "0" } %>
  <%= render "tile", tile: { type: "inputs", id: "1" } %>
  <%= render collection: @tiles, partial: "tile" %>
  <%= render "tile", tile: { type: "social", id: "1000" } %>
</div>

+

This is the console log:

log/development.log
Started GET "/" for 127.0.0.1 at 2017-08-31 16:56:28 -0400
Processing by TilesController#index as HTML
Started GET "/" for 127.0.0.1 at 2017-08-31 16:56:28 -0400
Processing by TilesController#index as HTML
  [1m[36mProject Load (0.5ms)[0m  [1m[34mSELECT  "projects".* FROM "projects" ORDER BY "projects"."launch_date" ASC LIMIT $1[0m  [["LIMIT", 10]]
  [1m[36mProject Load (9.1ms)[0m  [1m[34mSELECT  "projects".* FROM "projects" ORDER BY "projects"."launch_date" ASC LIMIT $1[0m  [["LIMIT", 10]]
  Rendering tiles/index.html.erb within layouts/application
  Rendered tiles/_tile_sam.html.erb (0.3ms)
  Rendered tiles/_tile.html.erb (8.0ms)
  Rendering tiles/index.html.erb within layouts/application
  Rendered tiles/_tile_sam.html.erb (0.0ms)
  Rendered tiles/_tile.html.erb (0.9ms)
  Rendered tiles/_tile_instagram.html.erb (12.6ms)  
  ...
  Rendered tiles/_tile_twitter.html.erb (0.5ms)
  Rendered collection of tiles/_tile.html.erb [48 times] (125.9ms)
  Rendered tiles/_tile_project.html.erb (0.1ms)
  Rendered tiles/_tile_social.html.erb (0.6ms)
  Rendered tiles/_tile.html.erb (2.7ms)
  Rendered tiles/index.html.erb within layouts/application (166.1ms)
  Rendered tiles/_tile_twitter.html.erb (0.6ms)
  ...
  Rendered collection of tiles/_tile.html.erb [48 times] (158.5ms)
  Rendered tiles/_tile_social.html.erb (0.1ms)
  Rendered tiles/_tile.html.erb (1.0ms)
  Rendered tiles/index.html.erb within layouts/application (165.3ms)
Completed 200 OK in 1310ms (Views: 217.1ms | ActiveRecord: 9.1ms)


Completed 200 OK in 1325ms (Views: 204.5ms | ActiveRecord: 0.5ms)

Help!

WOW

Finally figured this one out by removing code related to this action/view line by line. Basically, I was generating a few img tags with empty src fields. Apparently this causes many modern browsers to load a website several times, possibly in an attempt to find missing images or assuming the root URL is the image itself?

Found the behavior cited here:

https://forums.asp.net/t/1804472.aspx?Bizzare+safari+thing+two+page+loads+for+each+page+

page loads twice in Google chrome

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM