当从帮助程序调用时,Rails渲染调用不会显示

时间:2014-04-17 22:53:32

标签: ruby-on-rails render helper partials

我有一段代码在放置在视图中时有效,但在代码移动到帮助器时无法呈现。我知道代码正在执行,因为服务器显示了渲染调用,但浏览器没有输出。

这适用(当放在视图文件中时)

<% 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 %>

当我在浏览器中查看源时,绝对没有呈现任何内容。

1 个答案:

答案 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