新手问题 rails 创建新闻怎么正确排序显示?

1272729223 · 2012年07月23日 · 最后由 1272729223 回复于 2012年07月23日 · 4405 次阅读
<ul>
   <% @articles.each do |article| %>
    <li>
        <article>
            <header><h1><%= link_to article.title, article %></h1></header>
            <%= link_to(article, class: 'imgLk') do %>
              <figure>
                 <%= image_tag(article.image_url) %>
                </figure>
            <% end %>
            <p><%= truncate(strip_tags(article.content), length: 100) %></p>
            <footer>
                <ul class="actions clearfix">
                   <li class="clearfix"><%= link_to 'Edit', edit_article_path(article) %></li>
                   <li class="clearfix"><%= link_to 'Destroy', article, method: :delete, data: { confirm:'Are u sure?' } %></li>
                  </ul>
              </footer>
          </article>
      </li>
   <% end %>
  </ul>

它输出是最新发表的排在最后。

查询的时候 order 一下?

我在 article 的模块里面这样测试:

class Article < ActiveRecord::Base
  default_scope order: :title
  #...
end

它会按照 title 来排序 (但是不知道具体怎么操作的,排序的效果也不对) 我输入 order: :id 就是默认的排序,id 为 1 的在最上面。

另外我测试其他的,说表中没有这个字段,那么我想让它按照发表的时间 (无需更新时间) 自动排序怎么弄呢?

order: "id desc"

#1 楼 @chucai 谢谢,很抱歉新手啊,不太听得懂

#3 楼 @Rei 恩 我待会就看一下这一章 #4 楼 @huacnlee 是的,一下子感觉好简单 哈哈。已解决!

rails 默认 id 排序:1,2,3,4..这样排列,结果就是最先发表的 id 为 1 排在最前。 只要在创建的新闻模型中加上以下代码即可将结果按照符合人的逻辑排列:

default_scope order:  'id desc'

完整的是这样的: 找到文件:project/app/models/article.rb,在开头加入即可

class Article < ActiveRecord::Base
  default_scope order: 'id desc' #注意是'id desc'
  #...
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号