将application.html.erb呈现为默认值

时间:2018-02-18 06:49:22

标签: ruby-on-rails

如果index.html.erb文件不在模型的目录中,例如用户,rails将在views / application目录中查找它。

views/user
    *no index.html.erb file*
views/application
    index.html.erb

如果控制器中没有显式的渲染请求,则会自动发生此回退。

然而,如果我这样做,这似乎不起作用

render 'users/index'

导致"模板丢失"错误。

有没有办法请求渲染,如果它没有在模型的视图目录中找到它,它将回退到views / application目录?

1 个答案:

答案 0 :(得分:0)

尝试创建受保护的方法render_with_fallback并使用现有的私有方法default_template_name,如下所示:

def render_with_fallback(name, options = {})
  view = template_exists?(name) ? name : default_template_name
  render(view, options)
end