0

私のコントローラーはユーザーのリストを返し、JavaScript ファイル (目立たない JavaScript) をレンダリングします。そのユーザーのリストをループして、それぞれの部分を div にレンダリングしたいと思います。次のコードがあります。

見る:

<div id="searched-users-div"></div>

コントローラーから返された .js ファイル

$('#searched-users-div').html(
    "<%= 
        if @searched_users and @searched_users.length > 0
            @searched_users.each do |user|
                escape_javascript(render(:partial => "shared/user_block", :locals => { :user => user }))
            end
        end
    %>");

これをdivに出力します:

[#<User id: 1, name:...>]

これはうまくいかないようです。div内にhtmlなどを含まないプレーンテキストとして配列を印刷するだけのようです。@searched_users 配列をループして、それぞれのパーシャルをレンダリングする方法はありますか?

または、searched_users の配列を受け入れる新しいパーシャルを作成し、その中でループする必要がありますか?

4

1 に答える 1

3

埋め込まれた ruby​​ タグの前後の引用符を削除します ( "<%=andは and で%>"ある必要が<%=あります%>)。mapwithを使用しjoinて、複数のレンダリングを連結します。

$('#searched-users-div').html(
    <%= j(if @searched_users
            @searched_users.map do |user|
              render(:partial => "shared/user_block", :locals => { :user => user })
            end.join("\n")
          else
            ''
          end) %>);
于 2013-03-06T21:11:45.733 に答える