【问题标题】:How to output variable in sinatra without <%=如何在没有 <%= 的情况下在 sinatra 中输出变量
【发布时间】:2017-04-17 10:43:52
【问题描述】:

在 Rails 中,存在诸如“concat”之类的帮助器,用于在 erb 复制的 块中输出变量。我可以在 Sinatra 中使用哪个助手来执行相同的操作,而不使用 块?我的意思是,像

<%
#code
concat "This should be rendered in HTML, not in console"
#code
%>

编辑 视图中的代码是这样的(是的,逻辑太多,但这是我在 Ruby 中的第一个应用程序):

<% Dir.glob('uploaded/*').select do |entry| %>
    <div class="singleFileItem">
    <% if File.directory? entry %>
        <img src="images/folder.png">
    <% else 
       case entry.to_s.split(".")[1]
        when "doc","docx" %>
            <img class="pictogram" src='images/word.png'>
        <% when "xls","xlsx" %>
            <img class="pictogram" src='images/excel.png'>
        <% when "pdf" %>
            <img class="pictogram" src='images/pdf.png'>
        <% when "png", "jpg", "jpeg" %>
            <img class="pictogram" class="imageRaw" src="<%= entry.to_s %>">
        <% else %>
        <% end
       end %>
       <br>
       <span class="subFileText">
        <%= entry.to_s.split("/")[1][0..14] %>...
       </span>
    </div>
<% end %>

【问题讨论】:

  • 视图的渲染取决于您使用的 gem/文件扩展名,这在 Sinatra/Rails 中发生的方式相同。如果你添加一个haml gem并使用*.haml扩展模板将使用haml编译
  • @Bohdan,谢谢,但这表明,我应该将所有布局更改为 haml。如果是单页应用,那还可以,但如果是更复杂的应用呢?根据您的评论,我得出结论,由于 erb 中的想法,我的问题无法回答
  • @whodini9,也许,我的问题不是很清楚,我试着改写一下:在erb里面,这些&lt;% %&gt;里面怎么输出变量的值?
  • erb需要使用&lt;%=来打印执行的代码。这里打印的内容类似于 irb (Read-Eval-Print) stackoverflow.com/questions/7996695/… 中打印的内容
  • @whodini9,是否有可能以其他方式做到这一点?喜欢这里:thepugautomatic.com/2013/06/helpers

标签: ruby sinatra erb


【解决方案1】:

谢谢各位,终于找到了。 我用

扩展了 app.rb 文件
set :erb, :outvar => '@output_buffer'
def concat(text)
    @output_buffer << text
end

而且它有效。只需输入 .erb 视图

<% concat "Text that should be added to render" %>

你们都完成了。希望对有类似问题的人有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2011-02-26
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多