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


  • 红宝石1.9.2p90
  • 轨道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>

有可能吗?

我明白了吗?对不起我的英语。

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

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

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

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

最新更新