gpt4 book ai didi

ruby-on-rails - 根据模型更改 Rails 部分的查找路径

转载 作者:行者123 更新时间:2023-12-02 06:55:31 24 4
gpt4 key购买 nike

我目前有一些模板代码,如下所示:

render partial: 'reference', locals: { object: object }

Rails 查找部分 _reference.html.erbapp/views/application/app/views/controller_name/ .

但是,此 View 位于独立 Controller 中,与 object 无关。正在渲染,所以它不会在对象的 View 目录中查找 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期待一个字符串而不是实际的模板对象。也许有一种方法可以得到正确的字符串?或者渲染一个实际的模板?

    最佳答案

    您可以覆盖 to_partial_path模型中的方法,此方法由渲染调用以确定要为该模型渲染的部分路径。

    例如在你的 Model.rb

    def to_partial_path
    "references/#{kind}"
    end

    引用:
    http://cookieshq.co.uk/posts/rails-tips-to-partial-path/
    http://apidock.com/rails/ActiveModel/Conversion/to_partial_path

    关于ruby-on-rails - 根据模型更改 Rails 部分的查找路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937281/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com