ruby-on-rails - 在循环/迭代内从 Rails Helper 渲染 HAML

标签 ruby-on-rails ruby haml helper

我在 Rails 的助手中有以下代码:

def custom_options_tag(opts={})
  ['am', 'pm'].each do |meridian|
    ["12", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11"].each do |time|
      if @event.send(opts[:method], opts[:arg]) == time.to_s + meridian
        engine = Haml::Engine.new("%option{:value => human_time, :selected => 'selected'}= human_time")
      else
        engine = Haml::Engine.new("%option{:value => human_time}= human_time")
      end
      engine.render(Object.new, :human_time => time.to_s + meridian)
    end
  end
end

我的问题是... 这段代码如何在我的 View 中呈现? 似乎无法渲染已经在辅助方法内循环的 haml 代码。

为了简化事情,我尝试将一个段落渲染 3 次...

def some_paragraph_helper
  3.times do
    engine = Haml::Engine.new("%p Some paragraph from helper")
    engine.render
  end
end

当我调用该方法时...

some_paragraph_helper

...它输出的不是文本,而是简单的数字“3”,没有段落标记。请注意,它只显示数字“3”一次......就好像它没有经过循环一样。

感谢您的帮助。

LP

最佳答案

您需要返回engine.render的结果

def some_paragraph_helper
  result = ""
  3.times do
    engine = Haml::Engine.new("%p Some paragraph from helper")
    result << engine.render
  end
  result
end

关于ruby-on-rails - 在循环/迭代内从 Rails Helper 渲染 HAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623020/

相关文章:

javascript打字机不打印单词

ruby-on-rails - 使用 Dockerfile 克隆私有(private) git gem 存储库的最佳方法

ruby - Sinatra 构建 REST API 文档

haml - HAML,SASS/compass 和ERB之间的主要区别是什么?

ruby-on-rails - Ruby on Rails : patching Rack and deploying it

ruby-on-rails - 如何向对象添加新属性?

html - 从 Rails View 更改 Haml 表的 CSS 属性

ruby-on-rails - 载波缓存不重新提交

javascript - 如何将无尽滚动添加到我的应用程序 Rails 4 中

ruby-on-rails - Rails返回MIME类型 'text/html'的.js