param丢失或值为空:用户错误

时间:2015-09-21 16:02:30

标签: ruby-on-rails ruby-on-rails-4

在我的注册表单中,我收到以下错误:

参数缺失或值为空:用户

控制器:

class UsersController < ApplicationController

  def new
    @user = User.new(user_params)

  end

  def create 
    @user = User.new(params[:user])
    if @user.save
        redirect_to root_url, :notice => "Signed up!"
    else
        render "new"
    end
  end


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

查看:

<%= form_for @user do |f| %>
    <p>
        <%= f.label :email %><br/>
        <%= f.text_field :email %>
    </p>
    <p>
        <%= f.label :password %><br/>
        <%= f.password_field :password %>
    </p>
    <p>
        <%= f.label :password_conformation %><br/>
        <%= f.password_field :password_conformation %>
    </p>

<p class="button"><%= f.submit %></p>

<%end%>

已经尝试过herehere的建议。 删除user_params调用正在create方法中创建 ActiveModel :: ForbiddenAttributesError 错误。

1 个答案:

答案 0 :(得分:3)

您在params[:user]操作中没有new,因此错误。

像这样重写new

def new
  @user = User.new
end

正如@Pavan建议的那样,您也应该对create方法进行更改:

def create 
   @user = User.new(user_params)
   ...
end

此处您将params[:user]更改为user_params