gpt4 book ai didi

ruby-on-rails - Rails 引擎扩展 View ,而不是覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:12 25 4
gpt4 key购买 nike

我知道我可以从引擎中覆盖应用程序 View ,只需在引擎中创建相同的文件并将其从应用程序中删除(例如:'users/show.html.erb')。

但是,我想要的是能够扩展应用程序 View ,而不是覆盖。

假设我在主应用程序的“users/show.html.erb”中有一个yield:

yield :foo

我想要的是让引擎指定相同的文件 'users/show.html.erb' 并有一个 content_for block

content_for :foo {}

因此,将引擎 View 中的一些模板数据注入(inject)到应用程序 View 中。

显然,上面的代码不会工作,因为一旦它在应用程序中找到了模板文件,它就不会在引擎中寻找模板文件。

有没有办法让它工作?

最佳答案

在 Rails 中无法以这种方式扩展 View 。但是,您可以使用 partials 来完成此操作。在您的引擎中,编写一个局部 View 文件 users/_show.html.erb,然后在您的应用程序 View 中呈现它:

# app/views/users/show

# will look for a partial called "_show.html.erb" in the engine's and app's view paths.
render partial: 'show'

这和您的建议一样简单。

这个 gem 试图实现 View 的部分扩展,但它的工作方式与我刚才描述的类似:https://github.com/amatsuda/motorhead#partially-extending-views-in-the-main-app

关于ruby-on-rails - Rails 引擎扩展 View ,而不是覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44285307/

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