我有个问题。我需要使用另一个命名空间的部分来渲染对象。
render complain.target
它尝试从当前命名空间(当前是admin
)呈现部分
缺少部分管理员/公告/公告...
我不需要从 admin/.. 渲染它
我不能指定部分路径
render partial: '/bulletins/bulletin', locals: { bulletin: complain.target }
但它是多态关联,使用了不同的部分路径。有什么办法吗?提前致谢!
我有个问题。我需要使用另一个命名空间的部分来渲染对象。
render complain.target
它尝试从当前命名空间(当前是admin
)呈现部分
缺少部分管理员/公告/公告...
我不需要从 admin/.. 渲染它
我不能指定部分路径
render partial: '/bulletins/bulletin', locals: { bulletin: complain.target }
但它是多态关联,使用了不同的部分路径。有什么办法吗?提前致谢!
似乎没有办法通过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 }
%>
您可以使用render "/#{complain.target.to_partial_path}"