我正在使用设计宝石,我用它来创建一个基本的用户模型。之后,我添加了一个" 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编辑其电话号码字段?提前致谢
答案 0 :(得分:0)
当您转到 def user_params
params.require(:user).permit(:phone_number)
end
时,您没有提供任何参数,但您的控制器需要参数[:user]:
#home
这就是你得到错误的原因。您可能不希望将根路由到此AlertDialog dialog = builder.create();
操作。