1
  • 红宝石 1.9.2p290
  • 导轨 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>

是否可以?

我清楚了吗?对不起我的英语。

4

1 回答 1

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

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

于 2012-07-11T22:12:14.073 回答