Я пишу приложение Ruby on Rails с контроллером, называемым «page_controller», который отвечает за отображение страниц пользователям. Существует 3 разных типа страниц, которые могут отображаться, и в каждом случае на заднем конце должны быть разные вещи, поэтому я решил разбить функциональность на 3 метода в контроллере. Когда пользователь запрашивает страницу, вызывается метод «show», который определяет, принадлежит ли страница: 1. Принадлежит пользователю 2. Принадлежит другому пользователю и может быть просмотрен пользователем, запрашивающим его. 3. Принадлежит другому пользователю и не может быть просмотрен пользователем, запрашивающим его (неавторизованный)Методы вызова, которые визуализируют представления условно в контроллере Rails
Затем для вызова страницы вызывается соответствующий метод. Код выглядит примерно так:
def show
if (something)
showMine
elsif (something else)
showAnother
else
showUnauthorized
end
end
def showUnauthorized
respond_to do |format|
format.html # showUnauthorized.html.erb
end
end
def showMine
respond_to do |format|
format.html # showMine.html.erb
end
end
def showAnother
respond_to do |format|
format.html # showAnother.html.erb
end
end
Я получаю шаблон отсутствует ошибку, потому что рельсы хотят, чтобы сделать вид, когда «шоу» называются, но я не хочу любые мнения быть вынесены, когда «шоу» является называется. Я просто хочу, чтобы «show» вызывал правильный метод оттуда, и отображалось соответствующее представление для этого метода (showMine, showAnother или showUnauthorized). Как я могу это сделать? Или я полностью об этом поменяю?
Попробуйте использовать 'render 'my_custom_view'' внутри * showUnauthorized *, * showMine *, * showAnother * методы. Если это не работает, укажите 'render: nothing => true' в' show'. Я также предлагаю объявить специальные методы частными (ничего общего с вашей проблемой). –