2013-07-31 8 views
42

Przeszukałem katalogi mojej aplikacji i nie mogę znaleźć strony html dla domyślnych szyn Witaj na stronie pokładowej. Nie mogę również znaleźć trasy domyślnej strony Welcome Aboard w routes.rb. W jaki sposób aplikacja do mojej szyny kieruje http://localhost:3000/ do nieistniejącej strony w mojej aplikacji?Gdzie jest domyślna strona "Witamy na pokładzie" w mojej aplikacji?

Serwer szyny produkuje następujące informacje:

Started GET "/" for 127.0.0.1 at 2013-07-31 02:00:13 -0600 
Processing by Rails::WelcomeController#index as HTML 
    Rendered /Users/7stud/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb (0.1ms) 
Completed 200 OK in 3ms (Views: 2.5ms | ActiveRecord: 0.0ms) 

Tak to wygląda mi na to, że jest kontrolerem pochowany gdzieś gem, który obsługuje żądania.

+0

Możesz sprawdzić, czy wszystko jest w porządku, odwiedzając plik robots.txt. –

Odpowiedz

52

Od Rails 4 strona "Witamy na pokładzie" nie znajduje się już w public/index.html. Jest - jak już zauważyłeś - umieszczona wewnątrz jednego z klejnotów Rails.

Sam już odpowiedziałeś na to pytanie; Strona "Witamy na pokładzie" to - w twoim przypadku - adres: /Users/7stud/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb

Aby się go pozbyć, postępuj zgodnie z instrukcjami na stronie. Zasadniczo są to:

  1. Tworzenie kontrolera
  2. dodać trasę korzeniowy w config/routes.rb na trasie do tej nowo utworzonej kontrolera.

chodzi o jak żądanie do aplikacji kończy się w kontrolerze wewnątrz railties, niech kopać gem: Inside Rails::Application::Finisher znaleźć to:

initializer :add_builtin_route do |app| 
    if Rails.env.development? 
    app.routes.append do 
     get '/rails/info/properties' => "rails/info#properties" 
     get '/rails/info/routes'  => "rails/info#routes" 
     get '/rails/info'   => "rails/info#index" 
     get '/'      => "rails/welcome#index" 
    end 
    end 
end 

Blok dodaje kilka tras do aplikacji podczas pracy w trybie deweloperskim - jedna z nich jest drogą do akcji "Witamy na pokładzie": get '/' => "rails/welcome#index"

To - jak każdy inny inicjator - jest wykonywane podczas uruchamiania serwera aplikacji (działającego pod numerem rails server lub jakkolwiek to robisz). W przypadku Finisher, wszystkie jego inicjatory są uruchamiane po uruchomieniu wszystkich innych inicjalizatorów.

Należy zwrócić uwagę, w jaki sposób trasy są dodawane, aby pojawiły się na ostatnim miejscu w zestawie tras. To, w połączeniu z faktem, że Railsy używają pierwszej dopasowanej przez siebie trasy, zapewnia, że ​​te domyślne trasy będą używane tylko wtedy, gdy nie zostanie zdefiniowana inna trasa.

+3

Jesteś dla mnie za szybki :) – Benj

+0

Jedna zwlekana wątpliwość: jak moja aplikacja trasuje 'http: // localhost: 3000 /' do kontrolera w klejnocie ? Czy szyny automatycznie kierują się do kontrolera w tym klejnocie, jeśli trasa "/" nie pasuje do niczego w routes.rb? – 7stud

+1

Zaktualizowałem odpowiedź, ale krótka odpowiedź brzmi "tak". –

Powiązane problemy