Leo*_*Leo 2 ruby-on-rails ruby-on-rails-3
我目前有一些模板代码,如下所示:
render partial: 'reference', locals: { object: object }
Run Code Online (Sandbox Code Playgroud)
Rails _reference.html.erb在app/views/application/和中寻找局部app/views/controller_name/。
但是,此视图位于独立的控制器中,与object呈现的对象无关,因此不会在对象的view目录中查找app/views/object。我不能使用标准render object语法,而让Rails自动确定局部路径,因为我不想呈现局部路径object/object,而是呈现局部路径object/reference。
我该如何解决?
我在想:
render object语法的方式,但是指定了不同的部分名称;要么一个使用不同方法来查找部分的帮助函数,其用法如下:
render partial: find_partial('reference', object), locals: { object: object }
Run Code Online (Sandbox Code Playgroud)我尝试过的
我试图使用第二种方法:
def find_partial(name, object)
lookup_context.find name, [object.class.model_name.plural, 'application'], true
end
Run Code Online (Sandbox Code Playgroud)
这非常接近我想做的事,即找到正确的部分,application/reference如果没有,则退回通用。但是,它会找到实际的ActionView::Template,并且render期望使用字符串而不是实际的模板对象。也许有一种方法可以获取正确的字符串?还是渲染一个实际的模板?
小智 6
您可以覆盖to_partial_path模型中的方法,render会调用此方法来确定要为该模型渲染的部分路径。
例如在您的Model.rb中
def to_partial_path
"references/#{kind}"
end
Run Code Online (Sandbox Code Playgroud)
参考:http : //cookieshq.co.uk/posts/rails-tips-to-partial-path/ http://apidock.com/rails/ActiveModel/Conversion/to_partial_path
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |