Rya*_* Yu 4 ruby-on-rails activeadmin
我在这里浏览了 Rails 教程:
http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
我正在尝试让 ActiveAdmin 能够删除用户。通过教程,我的用户模型has_secure_password也有一个remember_token属性。因此,当我转到 ActiveAdmin 用户页面并尝试编辑用户时,要填写的字段为:用户名、电子邮件、密码摘要、记住令牌。
例如,当我修改名称字段并尝试提交编辑请求时,我会得到一个ActiveModel::ForbiddenAttributesError. 当我尝试创建用户时也会发生这种情况。我认为这显然与我的身份验证/密码设置有关,但对于 Rails 来说相当陌生,我不知道从哪里开始寻找。有任何想法吗?
编辑:我尝试将其添加到我的 app/admin/user.rb 文件中:
controller do
def resource_params
return [] if request.get?
[ params.require(:active).permit(:name, :email, :password_digest, :remember_token) ]
end
end
Run Code Online (Sandbox Code Playgroud)
我的堆栈跟踪中的这个错误消失了:
Unpermitted parameters: utf8, _method, authenticity_token, commit, id
现在,当我update在 ActiveAdmin 中点击时,我不再收到 ForbiddenAttributesError。相反,页面会重新加载,但更改未提交,并且我在终端中收到此消息:
Started PATCH "/admin/users/59" for ...
...
...
(0.1ms) begin transaction
User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('example-58@railstutorial.org') AND "users"."id" != 59) LIMIT 1
(0.2ms) rollback transaction
Run Code Online (Sandbox Code Playgroud)
这是我的 users_controller.rb:
def update
@active = Active.find(params[:id])
if @active.update_attributes(active_params)
flash[:success] = "Profile updated"
redirect_to @active
else
render 'edit'
end
end
private
def active_params
return [] if request.get?
[ params.require(:active).permit(:name, :email, :password_digest, :remember_token) ]
end
Run Code Online (Sandbox Code Playgroud)
我具体不了解 ActiveAdmin,但您的错误表明您不允许您的id参数
参数
你的参数是这样的:
params.permit user: [:name, :email, :password_digest, :remember_token ]
Run Code Online (Sandbox Code Playgroud)
我首先尝试这个:
params.require(:user).permit(:name, :email, :password_digest, :remember_token)
Run Code Online (Sandbox Code Playgroud)
活动管理员
根据这个问题,你需要查看官方文档,也许可以尝试这个:
config.before_filter do
params.permit!
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7632 次 |
| 最近记录: |