我试图通过将多个嵌套元素转换为产生块的部分来干掉我的视图。我决定从一个简单的例子开始。为什么不能Rails渲染我的部分
笔者认为:
= render :partial => "../snippets/indented_divs", :locals => {:width => 12} do
%p foo
在app/views/snippets/_indented_divs.html.haml
:
%div.col-sm-1
%div{:class => "col-sm-#{width-2}"}
= yield
%div.col-sm-1
错误:
'nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.
我已经看到了这个错误的讨论,但它涉及到人的努力隐式地将ActiveModel兼容对象转换为部分。我不是。我试图直接打电话给我的部分。
发生了什么事?
UPDATE
顺便说一句,该问题显然是与产生的块,而不是找到局部的,因为当我更新视图不采取块...
= render :partial => "/_snippets/indented_divs", :locals => {:width => 12}
%p foo
.. 。我得到...
<div class='col-sm-1'></div>
<div class='col-sm-10'></div>
<div class='col-sm-1'></div>
<p>foo</p>
更新2
原来我可以使这项工作有:
= render :layout => "/snippets/indented_divs", :locals => {:width => 12} do
%p foo
但正如我在实际渲染的部分在这里,它仍然会是很好的知道为什么传递块渲染部分没有工作。
THX但这不是它 - 将更新我的帖子有更多信息 –
尝试取悦 –
我做到了,THX - 这是不是 –