简体   繁体   English

使用Rails 4和dev进行更新时不允许使用的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM