我也在为此苦苦挣扎。这是我最终使用的方法:
<%= render :partial => "#{dynamic_partial}" rescue nil %>
基本上,如果部分不存在,什么也不做。但是,如果部分丢失,您是否想打印一些东西?
编辑1:哦,我在阅读理解方面失败了。你确实说过你想渲染别的东西。在这种情况下,这个怎么样?
<%= render :partial => "#{dynamic_partial}" rescue render :partial => 'partial_that_actually_exists' %>
或者
<%= render :partial => "#{dynamic_partial}" rescue "Can't show this data!" %>
编辑2:
替代方案:检查部分文件是否存在:
<%= render :partial => "#{dynamic_partial}" if File.exists?(Rails.root.join("app", "views", params[:controller], "_#{dynamic_partial}.html.erb")) %>