提问人:dmoss18 提问时间:3/7/2013 最后编辑:dmoss18 更新时间:3/7/2013 访问量:933
使用 Rails 不显眼的 javascript 为列表中的每个元素渲染部分
Render partial for each element in list using Rails unobtrusive javascript
问:
我的控制器返回用户列表并呈现一个 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数组的新部分,并在其中循环访问它?
答:
3赞
PinnyM
3/7/2013
#1
删除嵌入的 ruby 标记前后的引号(应为 和 )。并使用 with 连接多个渲染:"<%=
%>"
<%=
%>
map
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) %>);
评论
0赞
Jim Stewart
3/7/2013
您可能还想移动条件和循环来处理 where is 的情况,否则您将调用(或没有内容)。@searched_users
nil
.html(nil)
.html()
评论