如何在视图中呈现子文件夹中的内容?

时间:2014-07-23 04:34:58

标签: ruby-on-rails middleman

我正在使用来自Suspenders的rails 4,并且需要从视图中的子文件夹中包含来自中间人博客机架应用程序的内容。在我的应用中,我将博客内容放在:

rails root > my_blog > source > index.html.erb.

我创建了视图:

rails root > app > views > welcomes > index.html.haml

我认为的代码是:

%h1 Welcome

= render "my_blog/source/index.html.erb"

但是当我访问该页面时,我收到Missing Partials错误,并且消息显示它只在views文件夹中查找。

如何从视图外的文件夹中呈现内容?

3 个答案:

答案 0 :(得分:1)

在你的视图文件中试试这个:

%h1欢迎

= render :partial => "my_blog/source/index"

注意:您必须在上面指定的路径中包含_index.html.erb部分文件。

此外,尝试将名称从_index.html.erb更改为_someothername.html.erb,因为index.html.erb通常是索引操作的视图文件。你可以避免不必要的混淆。

这可能对你有帮助..!

谢谢!

添加行(已编辑):

请从

更改您的文件名
rails root > my_blog > source > index.html.erb.

rails root > my_blog > source > _index.html.erb.

答案 1 :(得分:1)

<强>部分

问题是Rails试图调用partial,这不是你想要调用的。部分应该在其名称前面加上_underscore,向Rails表明它是部分的,因此您收到错误的原因

这一点很重要的原因是因为虽然你只是打电话给render,但你实际上也会调用部分

enter image description here

-

<强>公约

您遇到的一个问题是,您将以多种方式反对约定:

  
      
  • MVC指示每个请求都会加载“视图”(因此Rails会在您使用它时只是存在它)

  •   
  • 系统的“部分”功能需要添加到您向用户展示的视图中。这意味着你必须确定你   在屏幕上显示的视图

  •   

这意味着您需要确定是否要在应用的此部分中使用partial或其他元素。从它的外观来看,当你可能做正确的事情时,你需要确保你能够正确加载部分:

<%= render "your/partial/path/_partial_name.html.erb %>

-

查看路径

除了view路径问题之外,虽然我从未直接遇到此问题,但有一个名为append_view_path的功能,可让您添加另一个“路径”来查看您的应用:

#app/controllers/welcome_controller.rb
Class WelcomeController < ApplicationController
    append_view_path(File.join(RAILS_ROOT, "app/themes/#{@current_theme}"))
end

答案 2 :(得分:0)

您是否尝试过完整路径?

= render "#{Rails.root}/my_blog/source/index.html.haml"