部分访问 Sinatra 变量

sha*_*mcd 5 ruby sinatra

我对 Sinatra 相当陌生,我正在尝试从部分内部访问数据库中的数据。

这是我想要在页面上显示的部分的示例:

<% @articles.each do |article| %>
    <ul>
        <li> <%= article.articleName %> </li>
    </ul>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如果我只是设置一条像这样的路线,效果很好

get '/articles' do
     @article = Articles.all
     erb :articles
end
Run Code Online (Sandbox Code Playgroud)

和 /articles 页面类似

<% @articles.each do |article| %>
    <article>
        <p> <%= article.articleName %> </p>
        <p> <%= article.articleBody %> </p>
    </article>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但是,如果我将上面的代码放入部分代码中,它似乎不起作用。

任何帮助,将不胜感激。我确信我错过了一些简单的事情。

Luk*_*kal 5

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

例子:

文章模板:

<% @articles.each do |article| %>

<%= erb :'partials/_article', :layout => false, :locals => { :article => article } %>

<% end %>
Run Code Online (Sandbox Code Playgroud)

部分/_文章模板:

Title <%= article.title %>

...
Run Code Online (Sandbox Code Playgroud)

PS:设置从模板根目录到部分的路径。这种奇怪的语法:'partials/_article'是 Sinatra 的技巧,它使您能够访问子目录中的模板,这不起作用(我认为)::partials/_article'partials/_article'.