Rails использует список префиксов для разрешения шаблонов и партиалов. В то время как вы можете явно указать префикс («вопрос / ответ»), как предлагается в другом ответе, этот подход потерпит неудачу, если сам шаблон содержит неквалифицированные ссылки на другие частичные значения.
Если предположить, что у вас есть суперкласс ApplicationController и унаследован от него QuestionController, то места, где Rails будет искать шаблоны, по порядку, «app / views / question /» и «app / views / application /». (На самом деле, он также будет выглядеть в виде последовательности путей просмотра, но для простоты я приукрашиваю это.)
Учитывая следующее:
class QuestionController < ApplicationController
end
class AnotherQuestionController < ApplicationController
end
QuestionController._prefixes
# => ["question", "application"]
AnotherQuestionController._prefixes
# => ["another_question", "application"]
Решение № 1. Поместите частичное в «app / views / application /» вместо «app / views / question /», где оно будет доступно обоим контроллерам.
Решение № 2. Наследовать от QuestionController, если необходимо.
class AnotherQuestionController < QuestionController
end
=> nil
AnotherQuestionController._prefixes
# => ["another_question", "question", "application"]
Решение № 3. Определение метода класса AnotherQuestionController :: local_prefixes
Это было добавлено в Rails 4.2.
class AnotherQuestionController < ApplicationController
def self.local_prefixes
super + ['question']
end
end
AnotherQuestionController._prefixes
# => ["another_question", "question", "application"]