加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails 5中添加共享视图文件的位置?

发布时间:2020-12-17 03:57:04 所属栏目:百科 来源:网络整理
导读:我正在使用Rails 5,我想在我的项目中使用共享文件.我在网上搜索了这个,我得到了一些结果如下: 对于Rails 3 app/views/shared 对于Rails 4 app/views/application 但Rails 5没有任何内容. 我在谈论标准;是否有任何特定的位置在Rails 5中添加常见的视图文件,
我正在使用Rails 5,我想在我的项目中使用共享文件.我在网上搜索了这个,我得到了一些结果如下:

对于Rails 3

app/views/shared

对于Rails 4

app/views/application

但Rails 5没有任何内容.

我在谈论标准;是否有任何特定的位置在Rails 5中添加常见的视图文件,就像我们在其他框架中一样?像在Laravel中有一个布局文件夹?

解决方法

所有人都告诉你,普通视图文件没有“标准位置”是正确的.但是,如果您想询问Rails,如果您尝试在视图上渲染部分文件,它将寻找部分文件,只需获取您拥有的任何视图文件并渲染您知道不存在的部分文件.

如果你有一个UsersController,其视图结构看起来像app / view / users,你可以在任何视图上添加以下内容:

<%= render 'foo' %>

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

Missing partial users/_foo,application/_foo

这意味着每当您尝试使用它的名称呈现部分而没有任何路径信息时,Rails将会查找它

>首先在当前控制器的视图目录下,在这种情况下是用户
>然后在应用程序目录下

所以,我想你可以说Rails中普通视图文件的“默认位置”在应用程序目录下.

通过覆盖混合到Rails中每个控制器的ActionView::ViewPaths.local_prefixes私有类方法,可以添加到此以便为公共视图文件创建应用程序自己的“标准位置”:

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会在查看应用程序目录之前检查共享目录的部分内容.

请注意,此方法覆盖应在两个控制器中发生,否则UsersController中的local_prefix将继承自ApplicationController,最终会出现重复的查找路径,如下所示:

shared/_foo,users/_foo,application/_foo

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

<%= render 'shared/foo' %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读