rails改变部分集合渲染的路径
Posted
技术标签:
【中文标题】rails改变部分集合渲染的路径【英文标题】:rails change path of partial collection rendering 【发布时间】:2013-03-24 06:47:31 【问题描述】:我有 STI 关系,其中对话由消息和图像组成。
现在当我去渲染它们时,我使用:
<%= render conversation %>
效果很好。它找到给定对象的给定模板并渲染它。
现在对于我的移动网站,我想使用相同的东西,只是现在它应该找到说:
/mobile/message/_message.html.erb
而不是
/message/_message.html.erb
所以在我的控制器中我说:
if mobile?
prepend_view_path "mobile"
end
确实被调用了,它“预先设置了我的视图路径”,当我这样做时我可以看到它正在工作:
raise view_paths.inspect
但是现在当我做我的时候
<%= render conversation %>
它仍在默认位置,即 /views/ 中查找部分
【问题讨论】:
【参考方案1】:嗯,这应该可以,但它很不优雅:
<% conversation.each do |c| %>
<% c_class = c.class.to_s.downcase.underscore %>
<%= render :partial => "mobile/#c_class/#c_class", :object => c %>
<% end %>
【讨论】:
是的,但由于 STI,我不能这样做。这样做会破坏渲染,因为现在当它渲染图像对象时,它会尝试在消息部分中执行它 啊。我知道了。我想您可以使用对话类派生部分路径(请参阅编辑)。感觉确实有更好的方法。 这仍然无法按预期工作。对话是一个数组。此外,您需要使用您的语法:以上是关于rails改变部分集合渲染的路径的主要内容,如果未能解决你的问题,请参考以下文章