[英]Unpermitted parameters while update using Rails 4 and devise
I know this seems like a common issue here, but I have tried all the solutions others seemed working but not on mine, so I'm here for some help. 我知道这在这里似乎是一个常见问题,但是我已经尝试了其他人似乎可以使用的所有解决方案,但不适用于我自己,因此我在这里寻求帮助。 This is my controller:
这是我的控制器:
class UsersController < ApplicationController
before_action :authenticate_user!
def edit
@user = User.find(params[:id])
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice:'New User has been successfully created!'}
format.json { render :show, status: :created, location: @user}
else
format.html { render :new}
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
def user_params
params.require(:user).permit(:Email, :Secure_password, :Name, :Role =>[])
end
And my form for the update information is here: 我的更新信息表格在这里:
<%= form_for(@user) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :name, "name" %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :email %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :role %><br />
<%= f.text_field :role %>
</p>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
I have tried adding this to the application controller: 我尝试将其添加到应用程序控制器中:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:update) {|u| u.permit(:email, :name, :role)}
devise_parameter_sanitizer.for(:create) {|u| u.permit(:email, :name, :role)}
end
end
Still giving me the Unpermitted parameters message in the server console: 仍然在服务器控制台中给我“不允许的参数”消息:
Started PATCH "/users/1" for 127.0.0.1 at 2016-02-17 10:14:55 -0500
Processing by UsersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kjWMoKSuzh5ppY4rtReDGqMeR2OvdNx0eTY8J/VS0ED4YyNmC3NVJGzCw6/V3eUCsMDGtfaN8gt7c2lxOM70DQ==", "user"=>{"name"=>"example", "email"=>"user@example.com", "role"=>"student"}, "commit"=>"Update User", "id"=>"1"}
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 11]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
Unpermitted parameters: name, email, role
(0.1ms) begin transaction
(0.0ms) commit transaction
Redirected to http://localhost:3000/users/1
Completed 302 Found in 17ms (ActiveRecord: 1.0ms)
What should I do to make this work? 我应该怎么做才能使这项工作? Thank you very much guys!
非常感谢你们!
def user_params
params.require(:user).permit(:email, :secure_password, :name, :role =>[])
end
These shouldn't be capitalised, like you have above. 这些不应该像上面一样大写。
Your params looks like this which doesn't match the parameters whitelisted in users controller those keys are case sensitive, so change them as below :- 您的参数看起来像这样,与用户控制器中白名单中的参数不匹配,这些键区分大小写,因此请按以下方式更改它们:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kjWMoKSuzh5ppY4rtReDGqMeR2OvdNx0eTY8J/VS0ED4YyNmC3NVJGzCw6/V3eUCsMDGtfaN8gt7c2lxOM70DQ==", "user"=>{"name"=>"example", "email"=>"user@example.com", "role"=>"student"}, "commit"=>"Update User", "id"=>"1"} 参数:{“ utf8” =>“✓”,“ authenticity_token” =>“ kjWMoKSuzh5ppY4rtReDGqMeR2OvdNx0eTY8J / VS0ED4YyNmC3NVJGzCw6 / V3eUCsMDGtfaN8gt7c2lxOM”“ =”,“ example.com“,”角色“ =>”学生“},”提交“ =>”更新用户“,” id“ =>” 1“}
def user_params params.require(:user).permit(:email, :secure_password, :name, :role) end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.