【问题标题】:param is missing or the value is empty:user error参数丢失或值为空:用户错误
【发布时间】:2015-09-22 00:10:10
【问题描述】:

在我的注册表单中出现以下错误:

参数缺失或值为空:用户

控制器:

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 错误。

【问题讨论】:

  • 查看代码属于哪个页面? new.html.erb?

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


【解决方案1】:

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

像这样重写new

def new
  @user = User.new
end

正如@Pavan 所建议的,您还应该更改create 方法:

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

在这里你将params[:user] 更改为user_params

【讨论】:

  • create方法中@user = User.new(params[:user])也应该是@user = User.new(user_params)
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
相关资源
最近更新 更多