[英]ArgumentError in ActiveAdmin::Devise::Sessions#new Rails 4
[英]ArgumentError in Sessions#new
我試圖將我的登錄和注冊表單都放在會話的新操作視圖上。 我得到的錯誤是在視圖的第9行上說“表單中的第一個參數不能包含nil或為空”。
路線:
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'
控制器:
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
結束
視圖:
<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>
在user controller
查看此內容似乎有兩個下划線。
def new
@new__user = User.new
end
將其更改為@new_user
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.