初心者の質問に申し訳ありませんが、私はRoRと握ってみようとしています。私は非常に基本的なサインアップとログイン処理を行っていますが、正しいルーティングを得るにはいくつかの問題があります。ログアウトボタンを押したときに実際にログアウトされているかどうかも分かりません。なぜなら、ログアウトボタンを表示していないからです。登録/ログインルーティングのエラー
のRails 3.1に次のように私のセットアップは次のとおりです。
セッションコントローラ
クラスSessionsController < ApplicationControllerに デフ新しい エンド
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 flash.now.alert = "Invalid email or password!" render "signup" end end def destroy session[:user_id] = nil redirect_to root_url, :notice => "Logged Out!"
エンド エンド
ユーザーコントローラ
クラスUserControllerで< ApplicationControllerに デフ新しい @user = User.new エンド
def create @user = User.new (params[:user]) if @user.save redirect_to root_url, :notice => "Signed Up!" else render "user/new" end end end
ユーザーモデル
class User < ActiveRecord::Base has_secure_password validates_confirmation_of :password validates_presence_of :password, :on => :create validates_presence_of :email validates_uniqueness_of :email, :on => :create end
セッション/ new.html.erb
<h1>Log In</h1> <%= form_tag login_path do %> <div class="field"> <%= label_tag :email %> <%= text_field_tag :email, params[:email] %> </div> <div class ="field"> <%= label_tag :password %> <%= password_field_tag :password %> </div> <div class="actions"><%= submit_tag "Log in" %></div> <%end%>
ユーザー/ new.html.erb
<% if session[:user_id] %> <!-- user is logged in --> <%= link_to logout_path %> <% else %> <!-- user is not logged in --> <%= link_to login_path %> <% end %> <h1>Sign Up</h1>
<%= form_for @user do |f| %> <% if @user.errors.any? %> <div class="error_messages"> <h2>Form is invalid</h2> <ul> <% for message in @user.errors.full_messages %> <li><%= message %></li> <% end %> </ul> </div> <% end %>
<div class = "field"> <%= f.label :email %> <%= f.text_field :email %> </div> <div class = "field"> <%= f.label :password %> <%= f.password_field :password %> </div> <div class = "field"> <%= f.label :password_confirmation %> <%= f.password_field :password_confirmation %> </div> <div class="actions"><%= f.submit %></div> <% end %>
最後に私のルートは、ファイル
MadeByV2::Application.routes.draw do controller :user do get "signup" => "user#new" end resources :users controller :sessions do get "login" => "sessions#new" post "login" => "sessions#create" delete "logout" => "sessions#destroy" end root :to => "user#new"
エンド
この記事のコードの大規模な使用のために申し訳ありませんが、私は人々が見ることができるので、それはすべてのも丸みを帯びたビューを提供するために最善の姿どこ間違っている。
あなたは、私はそれを取得していないようですので、実際にははるかに高く評価されるだろう自分自身を提供することができますすべてのヘルプ
おかげで、 トム
あなたのlink_toが間違っているように見えます... <%= link_to logout_path%>を<%= link_to "ログアウト"、logout_path、:method =>:delete%> 'に変更して、 。 –
こんにちはMatenia、助けてくれてありがとう、私はこれを私のコードに追加しました。 :) –