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"]
person
Steve
schedule
03.01.2019