2016-07-13 8 views
0

Ich versuche, sowohl meine Anmelde- als auch Anmeldeformulare in die neue Aktionsansicht einer Sitzung einzufügen. Der Fehler, den ich erhalte, sagt in Zeile 9 der Ansicht "Erstes Argument in Form kann nicht Null enthalten oder leer sein".ArgumentError in Sitzungen # neu

Routen:

Rails.application.routes.draw do 
resources :users 
get '/users/new' => 'users#new' 
post '/users/new' => 'users#create' 

get '/login' => 'sessions#new' 
post '/login' => 'sessions#create' 
get '/logout' => 'sessions#destroy' 

root 'users#index' 

Controller:

class SessionsController < ApplicationController 
def new 

end 

def create 
    @user = User.find_by_email(params[:session][:email]) 
    if @user && @user.authenticate(params[:session][:password]) 
     session[:user_id] = @user.id 
     redirect_to '/' 
    else 
     render '/login' 
    end 
end 

def destroy 
    session[:user_id] = nil 
    redirect_to '/login' 
end 



class UsersController < ApplicationController 
before_action :require_user, only: [:index] 

def index 
end 

def new 
    @new__user = User.new 
end 

def create 
    @new_user = User.new(user_params) 
    if @new_user.save 
     session[:user_id] = @new_user.id 
     redirect_to '/' 
    else 
     render '/login' 
    end  
end 

def edit 
    @user = User.find(current_user) 
end 

def update 
    @user = User.find(current_user) 
    if @user.update(user_params) 
     redirect_to '/home' 
    else 
     render '/edit' 
    end 
end 

private 
def user_params 
    params.require(:user).permit(:name, :email, :password) 
end 

Ende

Ausblick:

<div class="forms"> 

    <div class="login"> 

     <h3>Login</h3> 

     <%= form_for(:session, url: login_path) do |x| %> 
      <%= x.email_field :email, :placeholder => " Email", :style => "height:50px; width:350px; border: solid #ff4d4d; background-color:#eff5f5; margin-top:20px; padding-left:5px;" %> 
      <%= x.password_field :password, :placeholder => " Password", :style => "height:50px; width:350px; border: solid #ff4d4d; background-color:#eff5f5; margin-top: 35px; padding-left:5px;" %> 
      <%= x.submit "Login" %> 
     <% end %> 

    </div> 

    <div class="divide"></div> 

    <div class="signup"> 

     <h3>Signup</h3> 

      <%= form_for(@new_user) do |x| %> 
      <%= x.text_field :name, :placeholder => " Name", :style => "height:50px; width:350px; margin-top:20px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %> 
      <%= x.email_field :email, :placeholder => " Email", :style => "height:50px; width:350px; margin-top:35px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %> 
      <%= x.password_field :password, :placeholder => " Password", :style => "height:50px; width:350px; margin-top:35px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %> 
      <%= x.submit "Submit" %> 
     <% end %> 

    </div> 

</div> 

Antwort

0

auf diese in Ihrem user controller suchen scheint es zwei Unterstrich hat.

def new 
     @new__user = User.new 
    end 

Änderung es @new_user