1

我一直在试图弄清楚如何让我的模型访问 sinatra 中的根视图文件夹。

文件结构

config.ru
app.rb
models/
  song.rb
views/
  song/
    song.slim
    edit_song.slim
  layout.slim
  login.slim

当我通过 song.rb 查看“/song”路线时,控制器告诉它渲染 song.slim 视图。但是,当我这样做时,它最终会寻找 app/models/views/song/song.slim 而不是我想要的 app/views/song/song.slim。

4

1 回答 1

1

您可以明确配置您的视图所在的位置。

:views - 查看模板目录

一个字符串,指定视图模板所在的目录。默认情况下,这被假定为应用程序根目录中名为“views”的目录(参见 :root 设置)。在应用程序的根目录中指定替代目录名称的最佳方法是使用引用 :root 设置的延迟值:

例子

set :views, Proc.new { File.join(root, "../views") }

只需将其添加到您的配置方法中。如何?

根据你的例子

应该set :views, Proc.new { File.join(root, "../views") }来自你的模型。slim :"song/song"并使用或渲染它slim :"song/edit_song"

不确定,但如果您在 app.rb 中的路由逻辑,您可以跳过设置视图文件夹的部分。

于 2013-05-28T06:09:40.650 回答