bra*_*r19 1 haml ruby-on-rails
在我的布局应用程序中,我有这样的代码:
%li
= link_to "???????", all_articles_path(id: 1)
%li
= link_to "????-??????", all_articles_path(id: 2)
%li
= link_to "VIP-??????????", advanced_search_show_path(by_vip: true)
Run Code Online (Sandbox Code Playgroud)
例如,如果我去url"all_articles_path(id:1)"我需要添加类来链接"活动",但我怎么能这样做?我只有以下想法:
- if request.original_url.include? ("all_articles/1")
= link_to "???????", all_articles_path(id: 1), class: "active"
Run Code Online (Sandbox Code Playgroud)
但我认为这是一个坏主意,也许有任何其他更好的解决这个问题?
使用Rails的current_page? 方法,此
class: <%= "active" if current_page?(all_articles_path) %>
Run Code Online (Sandbox Code Playgroud)
要在HAML中使用此方法,您可以使用字符串插值:
class: "#{'active' if current_page?(all_articles_path)}"
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法: active_link_to
这个宝石是惊人的 - 你只需要使用= active_link_to "link", path()帮助器,它将提供一个活跃的类.我们在商业应用程序中使用它,它开箱即用
current_page?到目前为止,它比方法更好
更新
根据评论,条件样式将是这样的:
<% if defined?(params[:by_vip]) || defined?(params[:other]) %>
<% active_class = "active" %>
<% end %>
<%= link_to "your_link, "#", class: active_class %>
Run Code Online (Sandbox Code Playgroud)
是的,它是基本的,它可以放入帮手,但我希望它能告诉你你能做什么!