1

こんにちは、ユーザーのアカウントを更新するための簡単なフォームがあります。これが私のコントローラーです

def edit
  @users = User.find(params[:id])
end 

これが私の見解です

<%= form_for :user do |f| %>

<%= f.label :first_name %> <br />
<%= f.text_field :name  ,:value => @users.name%><br />

<%= f.label :last_name %> <br />
<%= f.text_field :lname  ,:value => @users.lname%><br />

<%= f.label :email %> <br />
<%= f.email_field :email  ,:value => @users.email%><br />

<%= f.label :id %> <br />
<%= f.text_field :id  ,:value => @users.id%><br />

<br />
<%= f.submit ({:confirm => "Are you sure?"}) %>
<% end %>

送信をクリックすると、次のモンゴイドエラーが発生します

Mongoid::Errors::InvalidFind in UsersController#edit

問題: Document.find を nil で呼び出すのは無効です。

概要: Document.find は、パラメーターが 1 つ以上の ID であることを想定しており、ID が 1 つ指定されている場合は単一のドキュメントを返します。それ以外の場合は、複数の ID が指定されている場合はドキュメントの配列を返します。

解決策: これはほとんどの場合、パラメーターが検索に直接渡されたことが原因であり、パラメーターが存在しないか、アクセス元のキーが正しくありません。

私は Rails の初心者で、mongoDB を初めて使用します。どんな入力でも役に立ちます、ありがとう。

4

1 に答える 1

0

このフォームを使用してみてください

<%= form_for(@users) do |f| %>
   ...
   ...
<% end %>

:userあなたがそれを使用しているため、エラーが発生invalid findしますuser controller

于 2012-11-24T11:33:46.680 に答える