2017-05-02 4 views
-4

J'essaie de comprendre une application dans laquelle elle crée un lien via link_to vers new_user_session_path. Dans mon contrôleur, il n'y a pas de nouvelle ni de session. Le lien de génération est users/sign_in que vous pouvez voir ici: [ListenUp] [1]. De plus, sign_in n'est pas dans le contrôleur. Mon intuition est que c'est une magie de RoR.Impossible de comprendre où link_to pointe vers

Le contrôleur:

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    end 

    def show 
    @user = User.find_by_permalink(params[:id]) 
    @songs = Song.where(user: @user) 
    @friendships = @user.all_friendships 
    end 
end 

Les routes

Rails.application.routes.draw do 

devise_for :users 
resources :users 
resources :friendships 
root 'pages#search' 

resources :pages 
resources :playlists 
resources :songs 

get 'search' => 'pages#search' 
get 'search_results' => 'pages#search_results' 


end 

Une partie de l'idée que j'essaie de comprendre:

<li><%= link_to "sign in", new_user_session_path %></li> 
<li><%= link_to "sign up", new_user_registration_path %></li> 

Merci

[1]: http://listenup-songshare.herokuapp.com/ 
+3

[Commentaire obligatoire sur la non-liaison au code et https://stackoverflow.com/help/mcve] Passant, les chemins sont généralement définis par l'utilisateur dans routes.rb. Dans ce cas, new_user_session_path est défini par Devise, vous ne le voyez donc pas dans les emplacements habituels. Il est possible de les remplacer par vos propres routages, dont vous pouvez lire plus sur https://github.com/plataformatec/devise/wiki/How-To:-Customize-routes-to-user-registration-pages et https : //github.com/plataformatec/devise/wiki/How-To: -Change-the-default-sign_in-and-sign_out-routes. – Windmill

+0

Merci pour l'information, je vais le mettre à jour tout de suite. – MusicAndCode

Répondre

1

Rails générera automatiquement des aides pour vous en fonction de vos noms de route. Voir Rails Routing From the Outside In pour cela directement de la bouche des chevaux.

Par convention ces aides ressemblent quelque chose comme ACTION NAME + CONTROLLER NAME + "chemin" (ou "url"). Étant donné ce fichier de routes, il se peut qu'un new_song_path ait été généré pour vous. En plus de cela, les gemmes que vous ajoutez à votre Gemfile peuvent également créer des routes supplémentaires. Ici, vous voyez que new_user_session_path n'est pas votre code.

Pour afficher la liste de tous les itinéraires de votre application, y compris ceux ajoutés par d'autres gemmes, exécutez rake routes. Habituellement, je cours rake routes > tmp/routes.txt, qui enregistre la sortie dans un fichier nommé tmp/routes.txt (si vous n'êtes pas hip à bash), et je me réfère à ce fichier souvent lors du développement de mon application Rails.

+0

A vu dans le commentaire de @Windmill, il vient de Devise. Donc je suppose que je devrais trouver un nom de contrôleur UserSession avec une nouvelle action. Merci de votre aide. – MusicAndCode

+0

Une nouvelle action ou une méthode d'index, oui (ça dépend ... Je pense que les routes rake devraient vous dire le nom de la méthode aussi ...) – RyanWilcox