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 %>)。并使用mapwithjoin连接多个渲染:

$('#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 回答