Имя доступа к рельсам внутри частичного

У меня есть частичный, который я использую на разных страницах. Я хочу условно скрыть определенный div внутри частичного на основе представления, которое его визуализирует.

Я думал о создании специфичного для страницы javascript файла, который будет искать div и скрывать его.

Но если бы был способ получить имя/имя представления в частичном, это было бы центральным для частичного и не потребовало бы загрузки одного и того же файла javascript на нескольких страницах.

Кто-нибудь знает способ сделать это внутри частичного

Ответ 1

В то время как ответ @wahaj будет работать, если вы хотите сделать то, что вам нужно в центральном месте, вы можете проверить переменные controller_name и action_name в частичном, чтобы определить вид, в котором вы находитесь (например, controller_name == "services" и action_name == "show" сообщит вам, что вы находитесь в представлении "Показать" для диспетчера службы)

Ответ 2

вы можете получить имя частичного рендеринга в настоящее время из метода Помощника со следующим:

controller.view_context.view_renderer.instance_variable_get('@_partial_renderer').instance_values['path']

Ответ 3

Вы можете отправить параметр стиля в качестве локальной переменной в частичный, изменяя параметр в зависимости от того, откуда вы звоните. Что-то вроде:

render :partial => 'xyz', :locals => {:style => 'display:none or display:block'}

и в частичном, что вы могли бы сделать:

<div style=<%=style%>></div>

Ответ 4

простое решение, внутри вашей частичной проверки, если вам нужно показать частичное или нет

_partial_name.html.erb

<%= content_tag :div, :style=> "display : #{show_div? ? 'block' : 'none'}" do%>
  html...or other stuff
 <%end%>

а затем в помощнике приложения

приложение/помощник/application_helper.rb

def show_div? #you can set name of your div like 'show_sidebar_div?'
  #decide either show this div or not
 action_name == 'show'
end