2013-04-02 78 views
4

我有一个STI关系,对话由消息和图像组成。部分集合渲染轨道更改路径

现在,当我去使它们使用:

<%= render conversation %> 

它可以完美运行。它找到给定对象的给定模板并呈现它。

现在对于我的移动网站,我想用同样的事情只是现在它应该找到说:

/mobile/message/_message.html.erb 

,而不是

/message/_message.html.erb 

所以在我的控制,我说:

if mobile? 
    prepend_view_path "mobile" 
end 

哪个确实被调用,它“prepends我的视图路径”,我可以看到我工作时:

raise view_paths.inspect 

但是现在,当我做我的

<%= render conversation %> 

它仍然是寻找在默认的位置,即/视图/为偏

回答

-1

那么,这应该工作,但它是令人不安的不雅:

<% conversation.each do |c| %> 
    <% c_class = c.class.to_s.downcase.underscore %> 
    <%= render :partial => "mobile/#{c_class}/#{c_class}", :object => c %> 
<% end %> 
+0

是的,但我不能做这个,因为性病。这样做会中断渲染,因为现在当渲染图像对象时,它会尝试在消息部分 –

+0

中执行它。我懂了。我想你可以使用会话类来派生部分路径(参见编辑)。它确实感觉像是有更好的办法。 – MrTheWalrus

+0

这仍然不会按预期工作。对话是一个数组。你的语法也需要做:<%= render partial:“mobile/conversation_class”,collection:conversation%> –