2011-02-09 16 views
5

私は最近Ruby On Railsアプリケーションにusersをすべてリストアップしたかったので、他の方法でリストする方法を見つけられなかったので、私はパーシャルを使うことに決めました。 私は私の管理ページで、以下の持っている(ただ、独自の管理コントローラにフックアップ):Ruby On Rails - "未定義のメソッド` id 'for 4:Fixnum "

<%= render :partial => User.find(:all) %> 

私はその後、私のユーザーがフォルダを表示するに_user.html.erbと呼ばれるファイルを持っています。これには次のものが含まれます。

<ul> 
<% div_for @user.object_id do %> 
    <li><%= link_to user.username, user.username %></li> 
<% end %> 
</ul> 

アプリケーションが実行され、私は管理ページに行くと、私は次のエラーを取得:

undefined method `id' for 4:Fixnum

をそれがあるため、部分的にである。このライン(のだと言いますファイル):

<% div_for @user.object_id do %> 

この問題が発生した(と試してみて、結果を見つけて、私だけのために動作しない解決策)を見つけるために時間グーグルた理由私はわかりませんよ。私はそれがインスタンス変数の@userの使い方と関係していると思いますが、私は完全にはわかりません。

答えて

8

div_forはアクティブレコードオブジェクトが引数として期待されるため、このエラーが発生します。これはidメソッドを呼び出します。あなたはアクティブなレコードオブジェクトではなく、idメソッドを持たないfixnum(@user.object_idの結果)を渡します。

@user.object_idの代わりに@userを渡すとうまくいきます。

また、@userの代わりにuserを使用する必要があります。また、レール3は、パーシャルのインスタンス変数を設定しません。

+0

@item.unit_of_measure.name 

は、私はエラーを取得: "nilのためのIDと呼ばれる、誤って4になる - あなたは本当にゼロのIDを望んでいた場合は、object_idが使う" –

+0

を@ Joesavage1:もしあなたがレール3を使っているなら、あなたは '@ user'の代わりに' user'を使う必要があります(もしそうでなければ 'rail'のバージョンで動作するので' user'を使うべきです)。 – sepp2k

+1

ありがとう! "@user"の代わりに "user"を使うと、大事なことが起こります! :D –

0

.object_id部分を失います。私は真剣になぜobject_idを使用していると思うことができません!そうする理由がありますか?とにかくdiv_forはオブジェクトの周りにdivをラップするので、.object_idの部分は残しておいてください!

+0

@userを使用するとエラーが表示される:「間違って4になるnilのidを呼び出す - 本当にnilのIDを使用したい場合はobject_idを使用する」 –

+0

@userはnilです。もう一度コントローラをチェックして@userインスタンス変数を設定してください。私はあなたが@userをnilにしたくないと思います:) – Gerry

+0

これはユーザーの部分的なものですから、@userが何を知っていると思います。私はユーザーをループしたいので、確かに各@userが何であるかを知っているはずです。コントローラーに何かを追加する必要がある場合 - コントローラー(ユーザー、または管理者) –

0

あなたが使用しているオブジェクトではなく、この時点で使用している列またはビザのvarsaでは、この種のエラーが発生します。

Iは、IDの代わりにユーザ= User.firstオブジェクトを使用しています。

0

これは私のために働いてください。代わりに@userを使用して

@item.unit_of_measure_id.name 
関連する問題