Pav*_*vel 2 ruby ruby-on-rails ruby-on-rails-3
我有个问题。我需要使用另一个命名空间的部分内容来渲染对象。
render complain.target
Run Code Online (Sandbox Code Playgroud)
它尝试从当前命名空间渲染部分内容(当前是admin)
缺少部分管理/公告/公告...
我不需要从 admin/.. 渲染它
我无法指定部分路径,例如
render partial: '/bulletins/bulletin', locals: { bulletin: complain.target }
Run Code Online (Sandbox Code Playgroud)
但它是多态关联,并且使用不同的部分路径。有什么办法可以做到吗?提前致谢!
似乎没有可能的方法可以通过调用来实现这一点render complain.target(在 Rails 5 源代码上检查)。
不过,action_view 有一个配置选项可以禁用部分名称空间前缀:
Rails.application.config.action_view.prefix_partial_path_with_controller_namespace = false
Run Code Online (Sandbox Code Playgroud)
编辑
今天,我使用了另一种解决方案:将单表继承模型渲染为局部模型时,可以在调用渲染局部模型时根据 Rails model_name 查找传递局部变量名称:
<%= render partial: "admin/#{object.to_partial_path}",
locals: { object.model_name.element => object }
%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1747 次 |
| 最近记录: |