首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类中使用haml_tag、haml_concat?

在类中使用haml_tag、haml_concat?
EN

Stack Overflow用户
提问于 2012-05-18 04:25:41
回答 3查看 868关注 0票数 0

我在Haml中定义了一个class,并且我希望能够在这个类中使用Haml辅助对象。例如:

代码语言:javascript
复制
- class Whatever
  - def self.write
    - haml_concat "something"

- Whatever.write

理想情况下,Whatever.write会将"something"输出到模板,但使用undefined method 'haml_concat' for Haml::Engine::Whatever:Class则会失败。

完整的堆栈跟踪:

代码语言:javascript
复制
haml_test.haml:5:in `write': undefined method `haml_concat' for Haml::Engine::Whatever:Class (NoMethodError)
    from haml_test.haml:8:in `block in render'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/lib/haml/engine.rb:191:in `eval'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/lib/haml/engine.rb:191:in `render'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/lib/haml/exec.rb:281:in `process_result'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/lib/haml/exec.rb:41:in `parse'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/lib/haml/exec.rb:21:in `parse!'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/gems/haml-3.1.4/bin/haml:9:in `<top (required)>'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/bin/haml:19:in `load'
    from /home/fraser/.rvm/gems/ruby-1.9.3-p125/bin/haml:19:in `<main>'

我怎样才能让它正常工作呢?我尝试过使用extendinclude Haml::Helpers,但它们也都失败了。有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2012-05-18 04:34:55

您可以尝试传入haml上下文。我不知道这是否会起作用,是否能满足你的目的,但这只是一个想法(我没有办法测试它)。

代码语言:javascript
复制
- class Whatever
  - def self.write(ctx)
    - ctx.haml_concat "something"

- Whatever.write(self)

如果这确实有效(同样,我真的不知道),您还可以尝试将上下文作为任意类级别的实例变量进行传递,这样您就可以使用任意编写器,而不必每次都传入haml上下文。

票数 0
EN

Stack Overflow用户

发布于 2012-05-18 04:37:47

试试这个:

代码语言:javascript
复制
- @self = self
- class Whatever
  - def self.write
    - @self.haml_concat "something"

- Whatever.write

但是,again,HAML是一种标记语言,您不应该在其中声明类。这也违背了MVC的原则。

票数 0
EN

Stack Overflow用户

发布于 2012-05-18 06:45:20

传递这个东西本身不是更容易吗?

代码语言:javascript
复制
= "something #{@my_object.my_method}"
= @my_object.my_other_method

我遗漏了什么?我不清楚你想要实现什么。

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

https://stackoverflow.com/questions/10642984

复制
相关文章

相似问题

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