gpt4 book ai didi

html - 如何根据调用内容的页面更改 HAML 中的 css 元素?

转载 作者:行者123 更新时间:2023-11-28 11:33:55 25 4
gpt4 key购买 nike

就 Ruby 和 Rails 而言,我还是个婴儿,仍然需要学习一切,但我今天确实有一件小事需要帮助。

我正在处理一个使用 HAML 的网站的 header ,我需要更改 <div> 的类名基于使用它的页面。

问题是:

如果是welcome.html.haml,我需要header.html.haml中的一个div是:

.navbar.navbar-inverse.navbar-fixed-top{:role => "navigation"}

对于所有其他页面,我需要 header.html.haml 中的相同 div 为:

.navbar.navbar-inverse.navbar-static-top{:role => "navigation"}

我希望使用类似的东西:

    - if <PAGE IS> == 'welcome.html.haml'

.navbar.navbar-inverse.navbar-fixed-top{:role => "navigation"}

- else

.navbar.navbar-inverse.navbar-static-top{:role => "navigation"}

我只是不确定我能给它什么条件。我需要有关 <PAGE IS> 的帮助部分。

或者,如果有更简单的解决方案,我会洗耳恭听。

编辑:

这是我尝试过的方法,但到处都是错误:

- if controller.action_name == 'welcome'
.navbar.navbar-inverse.navbar-fixed-top{:role => "navigation"}
.container
- else
.navbar.navbar-inverse.navbar-static-top{:role => "navigation"}
.container

另一个编辑:

最佳答案

您可以使用参数获取当前 Controller 和操作:

if params[:controller] == 'home' && params[:action] == 'welcome'
...
end

编辑:

另一种解决方案是将参数传递给您的 header 。在你的 welcome.html.haml

= render 'header', navbar: :static

在“_header.html.haml”中:

<div class="navbar navbar-inverse navbar-<%= local_assigns[:navbar] || 'fixed' %>-top" role="navigation">

另一个更新:

当然,除非您在布局中渲染页眉,否则它完全没有意义。

另一种方法可能是 content_for 方法。

#'welcome.html.haml'
content_for(:navbar_class) { 'fixed' }

#'_header.html.haml'
<div class="navbar navbar-inverse navbar-<%= content_for?(:navbar_class) ? yield :navbar_class : 'static' %>-top" role="navigation">

关于html - 如何根据调用内容的页面更改 HAML 中的 css 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com