3

呼んでいます:

render @users, :layout => "homepage"

ユーザーのデフォルトのパーシャル(views / _user.html.erb)を、ホームページ(views / users / _homepage.html.erb)専用のカスタムレイアウトでラップしたいからです。

しかし、これを行うと、user.nameメソッドでNoMethodErrorが発生します。

何らかの理由で、ユーザー変数がユーザーパーシャル内で適切に初期化されていないようです。

いくつかのテストの結果、ホームページのパーシャルは呼び出されず、ユーザーのパーシャルに直接送信されます...。

4

5 に答える 5

3

これは私が望んでいた解決策ではありません。レンダリングの呼び出しだけを使用してこの作業を行う方法があるかもしれないと思いますが、これが正しい出力を与えてくれました。

@users.each do |user|
  render :partial => "users/user",
         :layout => "users/homepage",
         :locals => { :user => user }
end

または、:layoutオプションは、コレクションではなく単一のリソースをレンダリングする場合にのみ機能しますか?

于 2011-02-28T04:58:30.620 に答える
2

2019年9月の時点で、Rails 6では、次のようになっています。

<%= render partial: 'homepage_user_list_entry', collection: @users %>

エイリアスあり:

<%= render partial: 'homepage_user_list_entry', collection: @banned_users, as: :user %>

これが将来の検索者、そして将来の私にも役立つことを願っています。

于 2019-09-26T03:14:52.790 に答える
1

:as => :userビューからパーシャルをレンダリングするには、追加してみてください。

<%= render :collection => @users, :as => :user, :partial => 'users/user_short_form', %>

于 2013-01-01T01:29:16.147 に答える
0

あなたは次のようなことをする必要があります

<%= render 'homepage', :collection => @users, :layout => 'homepage' %>

:layoutオプションについてはわかりませんが、@ users thro:collectionを渡す必要があります

それが役に立てば幸い!

于 2011-02-27T05:03:57.673 に答える
0

これがRailsに新しく追加されたものかどうかはわかりませんが、Rails 4.2.1では、コレクションを次のpartial引数に渡すことができrenderます。

render partial: @users, layout: "homepage"
于 2017-12-18T04:21:41.500 に答える