rails 5 param丢失或值为空:phone_number

时间:2017-09-25 04:34:55

标签: ruby-on-rails ruby devise ruby-on-rails-5

我正在使用设计宝石,我用它来创建一个基本的用户模型。之后,我添加了一个" phone_number"字段到它,我希望能够编辑另一个控制器中的phone_number字段。我设置控制器编辑电话号码的方式是这样的:

仪表板控制器

class DashboardController < ApplicationController

  # So that we don't have to authenticate users for only the home action in this controller
  skip_before_action :authenticate_user!, :only => [:home]

  def home
    current_user.update(user_params)

    respond_to do |format|
      if current_user.update_attributes(user_params)
        format.html { redirect_to current_user, notice: 'User was successfully created.' }
      else
        format.html { redirect_to current_user, notice: 'Errors.' }
      end
    end

  end

  private

  def user_params
    params.require(:user).permit(:phone_number)
  end
end

我的表格是:

<%= form_for(current_user) do |f| %>
        <%= devise_error_messages! %>
        <div class="field">
          <%= f.label :phone_number %><br />
          <%= f.text_field :phone_number, autofocus: true %>
        </div>

<% end %> 

现在,这个控制器的主方法被路由到我的根页面(所以当你点击localhost:3000时,它将访问这个家庭控制器。

不幸的是,该页面甚至没有加载,我得到的负载错误是:

  

ActionController :: DashboardController中的ParameterMissing #home

     

param丢失或值为空:user

如何在我的仪表板控制器中设置表单以让current_user编辑其电话号码字段?提前致谢

1 个答案:

答案 0 :(得分:0)

当您转到 def user_params params.require(:user).permit(:phone_number) end 时,您没有提供任何参数,但您的控制器需要参数[:user]:

#home

这就是你得到错误的原因。您可能不希望将根路由到此AlertDialog dialog = builder.create(); 操作。