2016-11-22 7 views
0

新しいユーザーを作成するときに、ログインを介してユーザのためのセッションを作成することはできません彼は古いRailsバージョンを使用しているため、おそらく私は多くのエラーに遭遇しました。だから問題は、私がログインしようとすると、実際にログインしていない間にユーザーが作成され、セッションも作成され、すべて正常に動作するということです。 ここでは、(コードのこの部分で持っていた多くの問題を気にユーザーがRailsの4:後<a href="https://www.youtube.com/watch?v=Hw6WtWJwRtU" rel="nofollow noreferrer">https://www.youtube.com/watch?v=Hw6WtWJwRtU</a></p> <p>:セッションが作成されるが、私はこのチュートリアル、次のセッションでは非常に基本的なログを作成してい

<!DOCTYPE html> 
<html> 
<head> 
    <title>Fitit</title> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 
    <% if current_user %> 
    <p> 
    Logges in as <%= current_user.username %> 
    <%= link_to "Log out", logout_path %> 
    </p> 
    <% else %> 
    <%= link_to "Sign Up", signup_path %> 
    <%#= link_to "Set Profile", profile_path %> 
    <%= link_to "Log In", login_path %> 
    <% end %> 

<%= yield %> 

</body> 
</html> 

にログインしている場合は、新しいセッションを作成するためのビューがあります示して自分のアプリケーションのレイアウトです:<%#= form_tag session_path DO%が> - 家庭教師に使用し、それがためにエラーが発生し、尋ねる:私はそこにほとんど何を渡そうとしましたID、

<h1>Log In</h1> 

<%#= form_tag session_path do %> 
<%= form_tag({controller: "sessions", action: "create"}, method: "get") do %> 

    <div class="field"> 
    <%= label_tag :username %><br/> 
    <%= text_field_tag :username, params[:username] %><br/> 
    </div> 
    <div class="field"> 
    <%= label_tag :password %><br/> 
    <%= password_field_tag :password %><br/> 
    </div> 
    <div class="actions"> 
    <%= submit_tag "Log In" %> 
    </div> 

<% end %> 

を次にここに私のセッションコントローラ

class SessionsController < ApplicationController 
    def new 
    end 

    def create 

    user = User.find_by_username(params[:username]) 
    respond_to do |format| 
     if user && user.authenticate(params[:password]) 
     session[:user_id] = user.id 
     format.html { redirect_to :index, notice: 'Logged In successfully' } 
     format.json { render :index, status: :created, location: @session } 
     else 
     flash.now.alert = "Email or password is invalid" 
     render "new" 
     end 
    end 
    end 

    def destroy 
    session[:user_id] = nil 

    respond_to do |format| 
     format.html { redirect_to root_path, notice: 'Logged Out successfully' } 
     format.json { head :no_content } 
    end 

    end 

end 
です

どこに問題があると思いますか?実際にセッションを作成するユーザー・コントローラーからCREATEメソッドを比較するだけです。

def create 
    @user = User.new(user_params) 

    respond_to do |format| 
     if @user.save 
     session[:user_id] = @user.id 
     format.html { redirect_to @user, notice: 'User was successfully created.' } 
     format.json { render :show, status: :created, location: @user } 
     else 
     format.html { render :new } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

とルート:

Rails.application.routes.draw do 

    resources :sessions 
    resources :foods 

    resources :users do 
    resources :entries 
    end 

    post "log_in" => "sessions#new", :as => "log_in" 
    get "logout" => "sessions#destroy", :as => "logout" 
    get "login" => "sessions#new", :as => "login" 
    get "signup" => "users#new", :as => "signup" 

    root :to => 'users#new' 

    get "app/views/users/profile.html.erb", to: "users#profile", as: "profile" 
end 

誰も私が間違ってここにやっている任意のアイデアを持っていますか?私はすでに2日目にこの問題に取り組もうとしています。

答えて

0

on form_tag GETの代わりにPOST(デフォルトの1つ)メソッドを使用します。

<%= form_tag({controller: "sessions", action: "create"}) do %> 

ため、ルーターファイル、ライン上:

資源:セッション

はそのような何かを生成します:セッションが/sessions(.:formatをPOST

)をセッション#作成

#...
+0

それは働いて、ありがとう! –

関連する問題

 関連する問題