渲染不知道在哪里寻找部分(来自帮助代码)

时间:2016-12-14 03:11:50

标签: ruby-on-rails ruby-on-rails-4 helpers partials

当我尝试从帮助器渲染部分时,它会因此(压缩)错误消息而失败:

Missing partial /_cube_icon with [...]. Searched in:

请注意,搜索到的目录列表为空!

相反,在视图中使用渲染时,它知道在哪里看:

Searched in:  * "/Users/Lars/GitHub/algdb/app/views"

在帮助程序代码中,我使用ActionController::Base.helpers.render()。我应该使用其他一些渲染功能吗?我怎么告诉它在哪里寻找偏见?我可以以某种方式设置项目错误吗?

这是Rails 4.2.4·Ruby 2.3.1

2 个答案:

答案 0 :(得分:0)

部分文件通常位于app/views目录中,并且不在Rails的helpers目录中,正如您从收到的错误消息中看到的那样。为了解决您的问题,我会将_cube_icon文件移到app/views目录中并在那里组织您的代码。我建议您阅读Rails文档中有关视图Layouts and Rendering

的此部分

此外,听起来你可能不熟悉rails,所以我会看看rails提供的约定。 Rails,你可能知道或不知道,是一个固定的框架,这意味着某些事情需要在某些地方进行才能使其发挥作用。以下是Rail的MVC框架Action View Overview的视图部分的另一个资源。希望这会有所帮助。

--- -----更新

如果你真的想从辅助文件渲染部分文件,有几种方法可以做到,但最好使用的方法如下:

app/helpers

 module MyHelper
   def custom_render
     concat(render(:partial => 'cube_icon'))
   end
 end

以下是stackoverflow中的一些链接,可以帮助您解决问题。

Rendering a partial from helper #1

Rendering from a partial from herlper #2

Using concat rails

答案 1 :(得分:0)

好的,我明白了:

我从帮助程序目录中的代码调用render,但是从标准SomethingHelper模块中的函数调用

遵循该惯例时,事情就开始起作用了。