[英]Add active class to all relative actions inside controller Ruby on Rails
I am using the following helper
to add is_active
css class to active links in my navigation bar. 我正在使用以下
helper
程序将is_active
CSS类添加到导航栏中的活动链接。
# application_helper.rb
def active_link_to(name = nil, options = nil, html_options = nil, &block)
active_class = html_options[:active] || "is_active"
html_options.delete(:active)
html_options[:class] = "#{html_options[:class]} #{active_class}" if current_page?(options)
link_to(name, options, html_options, &block)
end
This code works perfectly. 此代码完美地工作。 However, I want to keep
is_active
class on every page which related to the controller. 但是,我想在与控制器相关的每个页面上保留
is_active
类。 For example, here is my controller route: 例如,这是我的控制器路线:
# routes.rb
resources :catalogs, path: "s", only: [:index, :show] do
resources :products, path: "", only: [:show]
end
and imagine that I have 100 different catalogs. 想象我有100个不同的目录。 I want to keep
is_active
on the index page, while the user switches show pages. 我想在索引页面上保持
is_active
,而用户切换显示页面。
Link in my navigation bar: 我的导航栏中的链接:
= active_link_to "Products", catalog_path(1), class: "navbar_link"
Please note, that in the previous line I am navigation to the very first catalog, not to the index
page. 请注意,在上一行中,我导航到第一个目录,而不是
index
页面。
Thank you for your help and time! 感谢您的帮助和时间!
You can try active_link_to gem, which does exactly what you want. 您可以尝试active_link_to gem,它完全可以满足您的需求。 It would be something like this (not tested)
可能是这样(未经测试)
active_link_to 'Products', catalog_path(1), active: [['catalogs'], ['index', 'show']], class_active: 'is_active'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.