gpt4 book ai didi

ruby-on-rails - 在 Rails 5 中在哪里添加共享 View 文件?

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:35 31 4
gpt4 key购买 nike

我正在使用 Rails 5,我想在我的项目中使用共享文件。我在网上搜索了这方面的内容,得到的结果如下:

对于 Rails 3

app/views/shared

对于 Rails 4

app/views/application

但是 Rails 5 什么都没有。

我说的是标准;在 Rails 5 中是否有任何特定位置可以添加公共(public) View 文件,就像我们在其他框架中所做的那样?就像在 Laravel 中有一个布局文件夹?

最佳答案

所有告诉您通用 View 文件没有“标准位置”的人都是正确的。但是,如果您想询问 Rails 如果您尝试在 View 上呈现一个部分文件,它会去哪里寻找部分文件,只需获取您拥有的任何 View 文件并呈现一个您知道不存在的部分文件。

如果您有一个 UsersController,其 View 结构类似于 app/view/users,您可以在任何 View 中添加以下内容:

<%= render 'foo' %>

您可能会收到类似以下内容的错误:

Missing partial users/_foo, application/_foo

这意味着每当您尝试仅通过名称而不使用任何路径信息来呈现部分内容时,Rails 都会查找它

  • 首先在当前 Controller 的 View 目录下,在本例中为 users
  • 然后在application目录下

所以,我猜你可以说 Rails 中公共(public) View 文件的“默认位置”在 application 目录下。

可以添加到此以便通过覆盖 ActionView::ViewPaths.local_prefixes 为常见 View 文件创建您的应用程序自己的“标准位置”混入 Rails 中每个 Controller 的私有(private)类方法:

class ApplicationController < ActionController::Base
def self.local_prefixes
['shared', controller_path]
end
private_class_method :local_prefixes
end

class UsersController < ApplicationController
def self.local_prefixes
[controller_path]
end
private_class_method :local_prefixes
end

现在,你的错误会是这样的:

Missing partial users/_foo, shared/_foo, application/_foo

这表明 Rails 在查看 application 目录之前也会检查 shared 目录中的部分内容。

请注意,此方法覆盖应该发生在 两个 Controller 中,否则 UsersController 中的 local_prefixes 会继承自 ApplicationController,你最终会得到重复的查找路径,如下所示:

shared/_foo, users/_foo, shared/_foo, application/_foo

如果所有这一切都太费力/太奇怪,正如其他人所指出的,您总是可以在渲染部分时手动指定您的共享部分目录:

<%= render 'shared/foo' %>

关于ruby-on-rails - 在 Rails 5 中在哪里添加共享 View 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38716810/

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