Rails中的SLIM模板:如何从实例变量中呈现html元素?

时间:2012-07-11 20:38:46

标签: ruby-on-rails ruby-on-rails-3.1 haml slim-lang

  • ruby​​ 1.9.2p290
  • rails 3.1.1

如何在 SLIM 模板中从控制器创建html元素?

我会解释:

在我的观点中,我想在某些条件下更改“h1”html标记。

但我想将逻辑放在控制器中。

case params[:controller] when "recipes", "chefs"
    case params[:action] when "show", "index"
      @h_number = "h2"
    else
      @h_number ="h1"
    end
  else
    @h_number ="h1"
end

在我的 SLIM 视图中,我想要这样的内容:

= @h_number#logo
    = link_to image_tag("image.png"), root_path

结果是:

<h1 id="logo"><a href="/"><img src="image.png"></a></h2>

<h2 id="logo"><a href="/"><img src="image.png"></a></h2>

有可能吗?

我清楚了吗?抱歉我的英文。

1 个答案:

答案 0 :(得分:3)

我非常怀疑这是可能的。但是你总是可以创建一个辅助方法来完成这个

在您的应用程序帮助文件中,

module ApplicationHelper
    def logo
        num = case params[:controller] when "recipes", "chefs"
          case params[:action] when "show", "index" then 2 end
        end || 1

        "<h#{num}>" + link_to(image_tag("image.png"), root_path) + "</h#{num}>"
    end
end

在您的模板中

body
  header
    == logo

你的控制器不需要任何东西。