1

我有个问题。我需要使用另一个命名空间的部分来渲染对象。

 render complain.target

它尝试从当前命名空间(当前是admin)呈现部分

缺少部分管理员/公告/公告...

我不需要从 admin/.. 渲染它

我不能指定部分路径

render partial: '/bulletins/bulletin', locals: { bulletin: complain.target }

但它是多态关联,使用了不同的部分路径。有什么办法吗?提前致谢!

4

2 回答 2

4

似乎没有办法通过render complain.target调用来实现这一点(Checked on Rails 5 source)。

不过,action_view 有一个配置选项可以禁用部分命名空间的前缀:

     Rails.application.config.action_view.prefix_partial_path_with_controller_namespace = false

编辑

今天,我使用了另一种解决方案:在将 Single-Table-Inheritance 模型渲染为局部模型时,可以在调用局部渲染时根据 Rails 模型名称查找传递局部变量名称:

<%= render partial: "admin/#{object.to_partial_path}", 
           locals: { object.model_name.element => object } 
%>
于 2016-04-07T15:15:56.100 回答
1

您可以使用render "/#{complain.target.to_partial_path}"

于 2012-11-14T09:51:28.443 回答