5

私は最近users、自分の Ruby On Rails アプリケーションのすべてを一覧表示することにしました。他の方法でそれらを一覧表示する方法がわからなかったため、パーシャルを使用することにしました。管理ページに次のものがあります (独自の管理コントローラーに接続されているだけです)。

<%= 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>

アプリケーションを実行して管理ページに移動すると、次のエラーが表示されます。

4:Fixnum の未定義のメソッド「id」

この行が原因であると言われています(部分ファイルにあります):

<% div_for @user.object_id do %>

なぜこれが起こるのかわかりません(そして何時間もグーグルで検索して結果を見つけ、私にはうまくいかない解決策だけを見つけました)。インスタンス変数の使い方と関係があると思います@userが、よくわかりません。

4

4 に答える 4

8

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

@userそのため、代わりに渡す@user.object_idと機能します。

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

于 2011-02-09T21:17:39.993 に答える
0

使用しているオブジェクトの代わりに、その時点で使用している列またはビザ varsa を使用すると、この種のエラーが発生します。

user = User.first オブジェクトの代わりに id を使用しています。

于 2014-12-20T12:02:49.860 に答える
0

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

于 2011-02-09T21:20:58.657 に答える