2016-10-07 6 views
-1

私はRuby on Railsを学ぼうとしています。私はルビーで簡単な認証を作成するためにYouTubeのチュートリアルに従ってきました。すべてがうまくいっていますが、理解できません。ログインフォームはどのように動作しますか?

は私が持っているルート

resources :sessions, only: [:new, :create, :destroy] 

get 'signup', to: 'users#new', as: 'signup' 
get 'login', to: 'sessions#new', as: 'login' 
get 'logout', to: 'sessions#destroy', as: 'logout' 

私はセッションのためのコントローラとsessions_controllerユーザー

def new 
end 

def create 
    user = User.find_by_email(params[:email]) 
    if user && user.authenticate(params[:password]) 
    session[:user_id] = user.id 
    redirect_to root_url, notice: 'Logged in !' 
    else 
    render :new 
    end 
end 

def destroy 
    session[:user_id] = nil 
    redirect_to root_url, notice: 'Logged out!' 
end 

と私の意見/セッション/ new.html.erbを持って

<h1>Log In</h1> 
<%= form_tag sessions_path do %> 
<div class="field"> 
<%= label_tag :email %><br> 
<%= text_field_tag :email %> 
</div> 
<div class="field"> 
    <%= label_tag :password %><br> 
<%= password_field_tag :password %> 
</div> 
<div class="actions"> 
    <%= submit_tag "Log In" %> 
</div> 
<% end %> 

ログインフォームの仕組みを理解したい。私は/ loginに行くと、セッションコントローラとメソッドnewからアクションを要求することを理解していますが、メールとパスワードを入力して、次に何をすべきかを知らせる方法を知っていますか? PHPではあります。それはどのようにルビーで動作するのですか?

+0

へようこそ! ^^ – Ninigi

+0

申し訳ありません:私は貼り付けたい:

MHH

答えて

2

これはかなり広い質問ですが、私はおそらくあなたが知りたいと思うレールのいくつかを説明しようとします。

まず、the viewhelper docs, especially form_tagを詳しく見てください。これは、最初の引数としてsessions_pathを、フォームのhtmlタグを作成し、2番目の引数としてdo-blockを作成します。あなたのルートで

resources :sessions, only: [:new, :create, :destroy] 

を使用しているため sessions_pathはレールが提供する、ビューヘルパーです。これは、"/sessions"のような文字列を返します。 this guide to understand rails routingをご覧ください。

<%= form_tag sessions_path do %> 
    ... 
<% end %> 

は提出し、だから、

<form action="/sessions" method="post"> 
    ... 
</form> 

と同じである通常のHTMLフォームは、 "/セッション" に提出する以外の何ものでもありません。 Railsは私はちょうどNinigiの良い答えに加えて、我々はメールアドレスとパスワードでユーザーを認証し、セッションクッキー

if user && user.authenticate(params[:password]) 
    session[:user_id] = user.id 
    # ... 
+0

私は理解していないことは、どのようにSessionsController#メソッドを使用する必要があることを知っているいくつかの他の方法? – MHH

+0

私がrakeルートを入力すると、セッションにマップされた/セッションパスが表示されます#create – MHH

+1

これを読んでいくうちに時間をかけて、ロードするコントローラとアクションをどのように知っているか理解できます:http://guides.rubyonrails .org/routing.html –

2

にIDを設定する方法を、作成にSessionsController番号にPOSTリクエストを「/セッション」をマッピングしますあなたはターミナルでrake routesを使用して見ることができますルートを生成します

[::破壊:作成:新しい、]のみ、セッション:...

リソースをそのを追加したいです。

また、form_tagなどはhtmlを生成するビューヘルパーに過ぎません。単にブラウザでinspect要素を使用して、それが何を行ったのかを確認するだけです。

これをコメントとして追加しましたが、まだ十分な評判がありません。

2

これを理解するための出発点として、Michael HartlのRuby on Railsチュートリアルがあります。無料でオンラインで読むことができます。ログイン/サインアップなどのため以降

参照の章7

ステップの説明によってステップは非常に便利です。

リンク:https://www.railstutorial.org/book

、あなたがしてください手の込んだことができ.`あり、PHPで `RoRの

+0

ありがとうございます。私はすでにそれを読み始めました。 – MHH

関連する問題