使用Rails 3.2.1在Heroku上添加旧HTML

时间:2013-02-25 23:46:39

标签: html css ruby-on-rails-3

这是我的帖子/ index.html.erb文件的代码:

<!--
  Iterate over each post in list format
-->
  <% @posts.each do |post| %>       
    <ul class="posts">
    <!--
      Link to article, display date created, show edit, delete links if logged in
    -->
    <li><%= link_to "#{post.title}".html_safe, post, id: "article" %></li>
    <li id="date">  <%= post.created_at.strftime("%B %Y") %></li>

    <% if logged_in? %>
      <li>
        <%= link_to 'Edit', "/editor" + post_path(post), id: "edit_delete", data: {save_url: mercury_update_post_path(post)}  %>
        <%= link_to 'Delete', post, id: "edit_delete", :method => :delete %>    
      </li>
    <% end %>
  </ul>
<% end %>

在我的本地开发和生产环境中,关联的css样式表和html在浏览器中正确编译和呈现。但是,当我将此代码部署到heroku时,它会添加一些我之前删除的旧HTML,如页面源代码所示:

    <!--
    Iterate over each post in list format
-->
            <ul class="posts">
                <!--
                    Link to article, display date created
                -->
                <li>    <a href="/posts/5" id="article"><b>Endurance Exercise is Bad for your Health?</b>
<div><b><br></b></div></a>  </li>
                <li id="date">  February 2013                                   </li>

                    <!--
                        Show edit, delete links if logged in
                    -->
            </ul>

请参阅链接标记中嵌入的<div><b><br></b></div>标记“耐力运动对您的健康有害吗?” ......任何人都知道为什么在生产时部署到heroku时会把它放在那里?

1 个答案:

答案 0 :(得分:1)

这是你的罪魁祸首。 "#{post.title}".html_safe

您要显示的其中一个帖子标题中包含html标记。将.html_safe调用到用户输入的任何内容都是一个坏主意。您应该使用h(post.title)转义它,或者首先清除字符串以接受标记。查看sanitize helper