Rails - текущая страница?

Rails - текущая страница?

Варианты определения текущей страницы в Rails. Абсолютно стандартная задача в любом веб-приложении. Есть разные варианты определения текущей страницы, по факту текущего URL. Чаще всего используется изменения стилей элементов навигации или подключения разных ресурсов на разные страницы сайта.

Использовать params[:id]

= link_to 'My', my_path, class: ['navbar-item', ('is-active' if params[:id] == 'my')]

Использовать params[:action]

= link_to 'Order', form_path, class: ['navbar-item', ('is-active' if params[:action] == 'order')]

Использовать current_page?()

= link_to 'My', my_path, class: ['navbar-item', ('is-active' if current_page?(my_path))]

и ещё

current_page?('http://www.example.com/shop/checkout')
current_page?(product_path(@product))
current_page?(action: 'checkout')
current_page?('/shop/checkout')
current_page?(controller: 'shop', action: 'checkout', order: 'desc', page: '2')

Использовать current_controller?()

= link_to 'Articles', articles_path, class: ['navbar-item', ('is-active' if current_controller?(['articles']))]

Создать helper

module ApplicationHelper 
  def current_controller?(names)
    names.include?(controller_name)
  end
end

и использовать его

= current_controller?(['articles', 'news'])

Использовать request

request.path == '/'
request.url == '/'

Использовать link_to_if, link_to_unless

ul#navbar
  li= link_to_unless_current("Home", { action: "index" })
  li= link_to_unless_current("About Us", { action: "about" })