rails更改部分集合渲染的路径

时间:2013-04-02 19:55:44

标签: ruby ruby-on-rails-3 partial-views sti

我有一个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 个答案:

答案 0 :(得分:-1)

嗯,这应该有用,但是它很不优雅:

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