我有 STI 关系,其中对话由消息和图像组成。

现在,当我去渲染它们时,我使用:

<%= render conversation %>

这工作完美。它找到给定对象的给定模板并呈现它。

现在对于我的移动网站,我只想使用相同的东西,现在它应该找到说:
/mobile/message/_message.html.erb

代替
/message/_message.html.erb

所以在我的 Controller 中我说:
if mobile?
  prepend_view_path "mobile"
end

确实被调用了,并且它“预先设置了我的 View 路径”,当我这样做时,我可以看到它正在工作:
raise view_paths.inspect

但是现在当我做我的
<%= render conversation %>

它仍在寻找默认位置,即/views/部分

最佳答案

嗯,这应该可以工作,但它非常不优雅:

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

关于ruby - rails更改部分集合渲染的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15773185/

10-13 06:08