首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails:可以用HAML语法编写视图帮助器吗?

Rails:可以用HAML语法编写视图帮助器吗?
EN

Stack Overflow用户
提问于 2011-03-09 19:58:39
回答 3查看 5.9K关注 0票数 18

在重构过程中,只需复制HAML模板的一部分并将其粘贴到helper的代码中,这将非常方便。目前,在这种情况下,1)我必须从头开始重写视图的那一部分2)我必须使用像content_tag或haml_tag这样的冗长语法。

我知道可以用HAML systax来定义部分,它将作为helper。尽管1)对我来说,为每个小函数创建一个单独的文件是不方便的。2) partial的调用语法相当冗长。

理想情况下,我希望我的*_helper类看起来像这样:

代码语言:javascript
复制
- def some_helper(*its_args)
  .some_class
    = some_ruby_expression
  %some_tag#some_id
    - another_expression do
      etc

或者至少像这样:

代码语言:javascript
复制
define_haml_helper :some_helper, [:arg1, :arg2], %{
  .some_class
    = some_ruby_expression
  %some_tag#some_id
    - another_expression do
      etc
}

有没有插件可以解决我的问题?

或者,也许您可以描述如何将HAML片段重构为可重用的元素(helpers/function/partials/builders/等)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-09 20:41:09

reference

代码语言:javascript
复制
def render_haml(code)
    engine = Haml::Engine.new(code)
    engine.render
end

这将启动一个新的Haml引擎并渲染它。

票数 13
EN

Stack Overflow用户

发布于 2011-03-31 05:18:30

如果您所追求的只是一种用于小的可重用片段的方法,那么带有局部变量的偏量又如何呢?http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

票数 4
EN

Stack Overflow用户

发布于 2013-10-11 03:45:32

Haml现在有了一个capture_haml方法,您可以使用它来完成此任务。

代码语言:javascript
复制
  def some_helper
    capture_haml do
      .some_class
        = yield
      #some-code-after
    end
  end

some_helper do
  %h1 Hello World
end
=> <div class="some_class">
     <h1>Hello World</h1>
   </div>
   <div id="some-code-after"></div>

以下是有关capture_haml的更多信息的链接:http://haml.info/docs/yardoc/Haml/Helpers.html#capture_haml-instance_method

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5245432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档