无法理解link_to指向的位置

时间:2017-05-02 19:55:28

标签: ruby-on-rails link-to

我试图理解一个应用程序,它通过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/

1 个答案:

答案 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应用程序时经常引用这个文件。