我试图理解一个应用程序,它通过link_to创建一个链接到new_user_session_path。在我的控制器中,没有新的会话。 generate链接是users / sign_in,你可以在这里看到:[ListenUp] [1]。此外,sign_in不在控制器中。我的预感是它是一些RoR魔法。
控制器:
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
路线
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
我试图找出的部分观点:
<li><%= link_to "sign in", new_user_session_path %></li>
<li><%= link_to "sign up", new_user_registration_path %></li>
由于
[1]: http://listenup-songshare.herokuapp.com/
答案 0 :(得分:1)
Rails会根据您的路线名称自动为您生成帮助。从马的口中直接看Rails Routing From the Outside In。
按惯例,这些助手看起来像ACTION NAME
+ CONTROLLER NAME
+“path”(或“url”)。
根据此路线文件,您可能会为您生成new_song_path
。
除此之外,您添加到Gemfile的gem还可以创建其他路径。您在此处看到new_user_session_path
不是您的代码。
要列出应用中的所有路线,包括其他宝石添加的路线,请运行rake routes
。通常我会运行rake routes > tmp/routes.txt
,它会将输出保存到名为tmp/routes.txt
的文件中(如果你不喜欢bash),并且在开发我的Rails应用程序时经常引用这个文件。