我在 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/