Имя доступа к рельсам внутри частичного
У меня есть частичный, который я использую на разных страницах. Я хочу условно скрыть определенный 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