【问题标题】:Can't understand where link_to points to无法理解 link_to 指向的位置
【发布时间】:2017-05-02 19:55:28
【问题描述】:

我正在尝试了解一个应用程序,它通过 link_to 创建了一个到 new_user_session_path 的链接。在我的控制器中,没有新的也没有会话。生成链接是 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/

【问题讨论】:

标签: ruby-on-rails link-to


【解决方案1】:

Rails 会根据您的路线名称自动为您生成帮助程序。直接从马口中看到Rails Routing From the Outside In

按照惯例,这些助手看起来像 ACTION NAME + CONTROLLER NAME + "path"(或 "url")。

鉴于此路由文件,您可能会为您生成一个new_song_path

除此之外,您添加到 Gemfile 的 gem 还可以创建其他路由。在这里你看到new_user_session_path 不是你的代码。

要列出应用程序中的所有路由,包括由其他 gem 添加的路由,请运行 rake routes。通常我会运行rake routes &gt; tmp/routes.txt,它会将输出保存到一个名为tmp/routes.txt 的文件中(如果你不熟悉bash),我在开发我的Rails 应用程序时经常参考这个文件。

【讨论】:

  • 在@Windmill 的评论中看到,来自Devise。所以我想我应该找到一个带有新操作的控制器名称 UserSession。感谢您的帮助。
  • 一个新动作或索引方法,是的(这取决于...我认为 rake 路由也应该告诉您方法名称...)
猜你喜欢
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多