【发布时间】:2015-08-11 08:51:50
【问题描述】:
我目前有一些这样的模板代码:
render partial: 'reference', locals: { object: object }
Rails 在app/views/application/ 和app/views/controller_name/ 中查找部分_reference.html.erb。
但是,此视图位于独立控制器中,与正在渲染的 object 无关,因此它不查看对象的视图目录 app/views/object。我不能使用标准的render object 语法并让Rails 自动找出部分路径,因为我不想渲染object/object 部分,而是object/reference 部分。
我怎样才能解决这个问题?
我在想:
- 使用
render object语法但指定不同的部分名称的某种方式;或 -
使用不同方法查找部分的辅助函数,使用如下:
render partial: find_partial('reference', object), locals: { object: object }
我的尝试
我试图让第二种方法起作用:
def find_partial(name, object)
lookup_context.find name, [object.class.model_name.plural, 'application'], true
end
这非常接近于做我想做的事,即它找到正确的部分,如果没有,则回退到通用 application/reference。但是,它发现实际的ActionView::Template,而render 需要一个字符串,而不是实际的模板对象。也许有办法取出正确的字符串?还是渲染一个实际的模板?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3