我有QuestionController我现在有AnotherQuestionController与应渲染使用模板和谐音在app /视图/问题的行动/这可能吗? 好像是应该的。
我试过了
render :template => "question/answer"
但answer.html.erb包括谐音,我得到这样的错误
“缺少模板another_question / _my_partial.erb鉴于路径”
那么,有没有办法告诉Rails“治疗AnotherQuestionController仿佛它QuestionController,寻找意见和谐音在app /视图/问题”? 或将我要创建的应用程序/视图/ another_question - 这将导致重复(这不可能是Rails的方式)。
谢谢
模板渲染应实际工作
render :template => "question/answer"
您遇到的问题是找错了地方的谐音。 解决方法是简单,只要让你的谐音任何共享模板绝对的。 例如,问题/ answer.html.erb应该有
<%= render :partial => 'question/some_partial' %>
而不是通常的
<%= render :partial => 'some_partial' %>
你可以尝试inherit_views插件( http://github.com/ianwhite/inherit_views/tree/master )我在回答中提到这里这个问题 。
Rails使用前缀列表来解决模板和谐音。 虽然你可以明确地指定一个前缀(“提问/回答”),作为另一个答案建议,这种做法会如果模板本身包括对其他谐音不合格引用失败。
假设你有一个ApplicationController的父类,并从QuestionController它继承,那么地方Rails会查找模板,以“应用程序/意见/问题/”和“应用程序/视图/应用/”。 (实际上它也将看在一系列的视图路径也一样,但我粉饰,为了简单的缘故。)
考虑以下几点:
class QuestionController < ApplicationController
end
class AnotherQuestionController < ApplicationController
end
QuestionController._prefixes
# => ["question", "application"]
AnotherQuestionController._prefixes
# => ["another_question", "application"]
解决方案#1。 放置局部“应用/视图/应用/”而不是“应用程序/视图/问题/”,在那里将提供给两个控制器下。
解决方案#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"]