Wie verlinke ich einen anderen Controller in Schienen?

  • Ich lerne Ruby on Rails und habe eine dumme Frage zur Funktion link_to.

    Ich habe einen Controller mit dem Namen "home" eingerichtet. und ich habe "index" als Aktion erstellt.

    Ich habe devise eingerichtet. Wenn ich jedoch zu einigen Links wie sign_in, sign_up usw. navigiere, erhalte ich folgende Fehlermeldung:

     Routing Error
    No route matches {:controller=>"devise/home"}
     

    Ich habe es eingegrenzt auf:

     <%= link_to "Home", { :controller => "home", :action => "index" }, :class => "navlink" %>
     

    Dies funktioniert für meine Aktionen für zu Hause, aber nicht für Meine Vorstellungen.

    Was fehlt mir hier?

    22 November 2011
    Dave Newton
1 answer
  • Devise erstellt für Sie eine Reihe von Hilfsfunktionen, die die richtigen Pfade generieren. Führen Sie rake routes in der Befehlszeile aus, um sie anzuzeigen. Sie erhalten eine Ausgabe ähnlich der folgenden (vorausgesetzt, Ihr Devise-Modell heißt User).

                   new_user_session GET    /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"new"}
                      user_session POST   /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"create"}
              destroy_user_session GET    /users/sign_out(.:format)                     {:controller=>"devise/sessions", :action=>"destroy"}
                     user_password POST   /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"create"}
                 new_user_password GET    /users/password/new(.:format)                 {:controller=>"devise/passwords", :action=>"new"}
                edit_user_password GET    /users/password/edit(.:format)                {:controller=>"devise/passwords", :action=>"edit"}
                     user_password PUT    /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"update"}
                 user_registration POST   /users(.:format)                              {:controller=>"devise/registrations", :action=>"create"}
             new_user_registration GET    /users/sign_up(.:format)                      {:controller=>"devise/registrations", :action=>"new"}
            edit_user_registration GET    /users/edit(.:format)                         {:controller=>"devise/registrations", :action=>"edit"}
                 user_registration PUT    /users(.:format)                              {:controller=>"devise/registrations", :action=>"update"}
                 user_registration DELETE /users(.:format)                              {:controller=>"devise/registrations", :action=>"destroy"}
     

    Durch Anhängen von _path an den ersten Teil jeder Zeile erhalten Sie den Namen der Hilfsfunktion, die Sie aufrufen müssen.

    Zum Beispiel würden Sie im Folgenden einen Link zum Login finden Seite:

     <%= link_to "Login", new_user_session_path %>
     

    Denken Sie daran, ob die Anforderung eine DELETE und keine GET ist (wie die Logout-Link) müssen Sie dies als Teil des Aufrufs an link_to angeben.

     <%= link_to "Logout", destroy_user_session_path, :method => :delete %>
     
    22 November 2011
    Russell