2017-05-02 10 views
-4

link_toからnew_user_session_path経由でリンクを作成するアプリを理解しようとしています。私のコントローラには、新しいものもセッションもありません。生成リンクは、[ListenUp] [1]で見ることができるusers/sign_inです。また、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/ 
+3

[コードとhttps://stackoverflow.com/help/mcveにリンクしないことに関する覚え書きのコメント] 通常、パスはroutes.rbのユーザーによって定義されます。この場合、new_user_session_pathはDeviseによって定義されているため、通常の場所では表示されません。これを独自のルーティングで上書きすることができます。詳細についてはhttps://github.com/plataformatec/devise/wiki/How-To:-Customize-routes-to-user-registration-pagesおよびhttpsを参照してください。 ://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes。 – Windmill

+0

感謝の気持ちで、すぐに更新します。 – MusicAndCode

答えて

1

Railsはルート名に基づいてヘルパーを自動的に生成します。馬の口からまっすぐにこれについてはRails Routing From the Outside Inを参照してください。

規約では、これらのヘルパーはACTION NAME + CONTROLLER NAME + "パス"(または "url")のようになります。

このルートファイルを指定すると、new_song_pathが生成される場合があります。

これに加えて、Gemfileに追加する宝石は、追加のルートを作成することもできます。ここでは、new_user_session_pathがあなたのコードではないことがわかります。

他の宝石によって追加されたルートを含め、アプリ内のすべてのルートを表示するには、rake routesを実行します。通常、私はrake routes > tmp/routes.txtを実行し、出力をtmp/routes.txtという名前のファイルに保存します(もしbashにヒップホップされていないのであれば)、私はRailsアプリケーションを開発するときにこのファイルを頻繁に参照します。

+0

@Windmillのコメントで見てきたのはDeviseだ。だから私は新しいアクションでコントローラ名UserSessionを見つけるべきだと思う。ご協力いただきありがとうございます。 – MusicAndCode

+0

新しいアクションまたはインデックスメソッド、はい(それは依存しています...私はレーキのルートもメソッド名を教えてください...) – RyanWilcox

関連する問題