在 Rails 上将 active class 添加到控制器 Ruby 内的所有相关操作
Add active class to all relative actions inside controller Ruby on Rails
我正在使用以下 helper
将 is_active
css class 添加到导航栏中的活动链接。
# 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
此代码完美运行。但是,我想在与控制器相关的每个页面上保留 is_active
class 。例如,这是我的控制器路由:
# routes.rb
resources :catalogs, path: "s", only: [:index, :show] do
resources :products, path: "", only: [:show]
end
假设我有 100 个不同的目录。我想在索引页上保留 is_active
,而用户切换显示页。
Link 在我的导航栏中:
= active_link_to "Products", catalog_path(1), class: "navbar_link"
请注意,在上一行中,我导航到第一个目录,而不是 index
页面。
感谢您的帮助和时间!
您可以尝试 active_link_to gem,它完全符合您的要求。它会是这样的(未测试)
active_link_to 'Products', catalog_path(1), active: [['catalogs'], ['index', 'show']], class_active: 'is_active'
我正在使用以下 helper
将 is_active
css class 添加到导航栏中的活动链接。
# 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
此代码完美运行。但是,我想在与控制器相关的每个页面上保留 is_active
class 。例如,这是我的控制器路由:
# routes.rb
resources :catalogs, path: "s", only: [:index, :show] do
resources :products, path: "", only: [:show]
end
假设我有 100 个不同的目录。我想在索引页上保留 is_active
,而用户切换显示页。
Link 在我的导航栏中:
= active_link_to "Products", catalog_path(1), class: "navbar_link"
请注意,在上一行中,我导航到第一个目录,而不是 index
页面。
感谢您的帮助和时间!
您可以尝试 active_link_to gem,它完全符合您的要求。它会是这样的(未测试)
active_link_to 'Products', catalog_path(1), active: [['catalogs'], ['index', 'show']], class_active: 'is_active'