我有一段代码在放置在视图中时有效,但在代码移动到帮助器时无法呈现。我知道代码正在执行,因为服务器显示了渲染调用,但浏览器没有输出。
这适用(当放在视图文件中时)
<% vidList = "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0" %>
<% i=1 %>
<% vidList.each do |v| %>
<%= render partial: 'loadvid', locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v } %>
<% i=i+1 %>
<% end %>
这不是。
module VidsHelper
def loadvids(vidList)
i=1
vidList.each do |v|
render partial: 'loadvid', locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v }
i=i+1
end
end
end
正如我所说的,我知道正在调用该方法,因为服务器报告_loadvid.html.erb
呈现了4次。用
<% vidList = "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0" %>
<% loadvids vidList %>
当我在浏览器中查看源时,绝对没有呈现任何内容。
答案 0 :(得分:0)
据我所知,&lt; %%&gt;内的任何电话都有。不会显示。但是,在&lt;%=%&gt;内调用函数会显示方法的输出,而不是渲染输出。我能看到的唯一解决方案是捕获渲染输出,然后重新渲染它。目前的工作代码是:
在视图中:
<%= render inline: loadvids(vidList) %>
在帮手中:
def loadvids (vidList)
i=1
capture = []
vidList.each do |v|
capture.push render partial: "loadvid", locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v }
i=i+1
end
capture.join
end