ParameterMissing 参数缺失或值为空

ParameterMissing param is missing or the value is empty

我有以下情况: 我有一个管理员控制器,用于管理用户(由 Devise 生成的模型)。

因此,我使用另一个控制器的操作来管理资源 "users"。

这是我的文件:

admins_controller.rb

before_action :set_user, only: [:show, :edit, :update, :destroy]

def update
    respond_to do |format|
      if @user.update(user_params)
        format.html { redirect_to admins_index_path, notice: 'Product was successfully updated.' }
        format.json { render :show, status: :ok, location: @user }
      else
        format.html { render :edit }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end

  end

def set_user
      @user = User.find(params[:id])
  end

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

edit.html.erb

<h1>Edit user</h1>

<%= form_for @user, :as => :patch, :url => admins_update_path(id: @user) do |f| %>

  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this line_item from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
      <%= f.label :id %><br>
    <%= f.text_field :id %>
    </div>
  <div class="field">
      <%= f.label :email %><br>
    <%= f.text_field :email %>
    </div>
  <div class="field">
      <%= f.label :admin %><br>
    <%= f.text_field :admin %>
    </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

问题是当我提交编辑时,rails 给我一个错误:

你能帮帮我吗?我真的不知道怎么修 谢谢

编辑:

更改您的视图以删除 :as 选项,这将修复参数要求错误:

= form_for @user, :url => admins_update_path(id: @user) do |f|

:as 告诉 form_for 使用与您在 params.require 调用中使用的默认 class 名称不同的密钥名称。

您还应该删除您的 f.text_field :id - 您不希望有人编辑它。

然后您的 permit(...) 块将需要包含您希望允许批量分配的任何其他形式,很可能您需要:permit(:email, :admin)