Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 引用其他部分的部分的相对路径_Ruby On Rails_Ruby On Rails 3_Erb_Relative Path_Partial - Fatal编程技术网

Ruby on rails 引用其他部分的部分的相对路径

Ruby on rails 引用其他部分的部分的相对路径,ruby-on-rails,ruby-on-rails-3,erb,relative-path,partial,Ruby On Rails,Ruby On Rails 3,Erb,Relative Path,Partial,我使用的是(主要)部分: 或 但两者都不起作用 有没有一种方法可以使用相对路径来部分解析它使用的partials?这可能是解决问题的一种方法:我编写了一个助手方法来实现它。听起来像是完美的工作 def render_relative_partial(relative_path, option={}) caller_path = caller[0].split(".")[0].split("/")[0..-2].join("/") path = caller_path.gsub("

我使用的是(主要)部分:


但两者都不起作用


有没有一种方法可以使用相对路径来部分解析它使用的partials?

这可能是解决问题的一种方法:

我编写了一个助手方法来实现它。听起来像是完美的工作

def render_relative_partial(relative_path, option={})
    caller_path = caller[0].split(".")[0].split("/")[0..-2].join("/")
  path = caller_path.gsub("#{Rails.root.to_s}/app/views/","") + "/#{relative_path}"

  option[:partial] = path
  render option
end 

正如另一张海报所提到的,可以使用

以下是如何实现它:

controllers/shared\u page\u controller.rb

class SharedPageController
views/shared/page/head.html.erb



现在Rails不仅会在
app/views
中查找分部,还会在
app/views/shared/page/head
中查找分部。请列出分部的实际路径。如果您考虑第一个分部包含,该包含不会“重置”正在生成的视图的工作文件夹。如果要呈现的视图是app/views/projects/show.erb,“呈现部分:'shared/page/head'”只是“获取该文件的内容,然后在此处呈现”——您仍然在app/views/projects文件夹中。下面是一些关于如何使用它的更多解释。很好的解决方案!非常令人沮丧的是它没有内置。对我来说,我做了一些调整,并用
render partial:path,locals:option
<head>
  <%= render partial: 'shared/page/head/title' %>
  <%= render partial: 'shared/page/head/meta' %>
  ...
  <%= render partial: 'shared/page/head/fonts' %>
  ...
  <%= render partial: 'shared/page/head/google_analytics' %>
</head>
<%= render partial: 'title' %>
<%= render partial: './title' %>
def render_relative_partial(relative_path, option={})
    caller_path = caller[0].split(".")[0].split("/")[0..-2].join("/")
  path = caller_path.gsub("#{Rails.root.to_s}/app/views/","") + "/#{relative_path}"

  option[:partial] = path
  render option
end