加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails – 如何更改页面顶部显示的最新

发布时间:2020-12-17 03:41:42 所属栏目:百科 来源:网络整理
导读:我正在创建一个简单的房屋列表页面来掌握Rails,我目前有一个添加帖子页面设置,它发布到索引页面,但最新的帖子显示在页面的底部.我怎么能颠倒我的帖子的顺序来显示顶部的最新帖子? 不确定我应该提供哪些代码片段,但下面是我的代码: houses_controller.rb –
我正在创建一个简单的房屋列表页面来掌握Rails,我目前有一个添加帖子页面设置,它发布到索引页面,但最新的帖子显示在页面的底部.我怎么能颠倒我的帖子的顺序来显示顶部的最新帖子?

不确定我应该提供哪些代码片段,但下面是我的代码:

houses_controller.rb –

class HousesController < ApplicationController
  def index
    @houses = House.page(params[:page]).per(20)
  end

  def new
    @house = House.new
  end

  def create
    @house = House.new(params.require(:house).permit(:title,:price,:description,:image))
  if @house.save
    redirect_to root_path
  else
    render "new"
  end
  end

end

index.html.erb –

<% @houses.each do |house| %>

  <div class="house">
    <p><%= house.image %></p>
    <h2><%= house.title %></h2>
    <h2><%= house.price %></h2>
    <p><%= house.description %></p>
  </div>
<% end %>

<p><%= paginate @houses %></p>

house.rb –

class House < ActiveRecord::Base
    validates :title,presence: true
    validates :price,presence: true
    validates :description,presence: true
    validates :image,presence: true
end

解决方法

将订单添加到查询中.

@houses = House.page(params[:page]).per(20).order(created_at: :desc)

更好的是,您应该避免直接在控制器中链接多个范围.这种方法很难测试.创建自定义方法.

class House < ActiveRecord::Base
  # ...

  def self.listing(page)
    order(created_at: :desc).page(params[:page]).per(20)
  end
end

并在你的控制器中调用它

@houses = House.listing(params[:page])

通过这种方式,您可以使用单元测试单独测试列表和控制器.

作为旁注,即使您是初学者,在编写代码和官方文档之前,也不应该忽略阅读基本书籍的好习惯.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读