2012-07-11 31 views
1
  • 红宝石1.9.2p290
  • 轨3.1.1

如何SLIM模板创建控制器html元素?Rails中的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> 

这可能吗?

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

回答

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 

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

+0

谢谢!我是新手!你的回答对我来说是完美的。 – maiconsanson 2012-07-11 22:36:35

+1

这是一条古老的线索,但我认为值得一提的是像我这样的人开始。双等号('==')产生没有'escape_html'方法的输出。 – Brosig 2017-04-15 17:17:56