局部访问Sinatra变量



我是Sinatra的新手,我正在尝试从部分数据库中访问数据。

这是我想在页面上放置的一个局部示例:

<% @articles.each do |article| %>
    <ul>
        <li> <%= article.articleName %> </li>
    </ul>
<% end %>

如果我只设置一个像

这样的路由就可以了
get '/articles' do
     @article = Articles.all
     erb :articles
end

和/articles页面加上类似

的内容
<% @articles.each do |article| %>
    <article>
        <p> <%= article.articleName %> </p>
        <p> <%= article.articleBody %> </p>
    </article>
<% end %>
然而,如果我把上面的代码放入局部,它似乎不工作。

任何帮助都会很感激。我肯定我错过了一些简单的东西。

Sinatra不像Rails那样有内置的部分,但是您可以使用普通模板作为部分,如http://www.sinatrarb.com/faq.html#partials

所述:

的例子:

文章模板:

<% @articles.each do |article| %>
<%= erb :'partials/_article', :layout => false, :locals => { :article => article } %>
<% end %>

泛音/_article模板:

Title <%= article.title %>
...

PS:设置从模板根目录开始的部分路径。这个奇怪的语法:'partials/_article'是Sinatra的伎俩,它使您能够访问子目录中的模板,这不会工作(我认为)::partials/_article'partials/_article' .

Sinatra没有内置的部分功能。所以你有两个选择:

  1. 构建自己的部分处理程序,如这里或
  2. 使用偏导。rb from here

最新更新