Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails对相关记录进行排序_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails对相关记录进行排序

Ruby on rails Rails对相关记录进行排序,ruby-on-rails,Ruby On Rails,使用Rails 3.0.10和Ruby 1.9.2 我有一本书的模型,有很多页 class Book < ActiveRecord::Base has_many :pages # is this right? def pages Page.order('page_number asc').find_all_by_book_id(:id) end end class Page < ActiveRecord::Base belongs_to :book e

使用Rails 3.0.10和Ruby 1.9.2

我有一本书的模型,有很多页

class Book < ActiveRecord::Base
  has_many :pages

  # is this right?
  def pages
    Page.order('page_number asc').find_all_by_book_id(:id)
  end
end

class Page < ActiveRecord::Base
  belongs_to :book
end
classbook
当我检索一本书的页面时,我总是希望它们按页码排序。处理此问题的正确方法是什么,以便调用book.pages将按顺序返回所有页面

在编辑这本书时,我还显示了每一页可以编辑的内容。如果我使用嵌套属性,假设我前面的问题得到解决,这会按正确的顺序返回页面吗

<%= form_for [@book, @pages] do |f| %>
  <%= f.fields_for :pages do |page| %>
    do something
  <% end %>
<% end %>

做点什么

谢谢

我相信您可以直接在关联声明中指定默认顺序:

class Book < ActiveRecord::Base
    has_many :pages, :order => "page_number asc"
end

class Page < ActiveRecord::Base
  belongs_to :book
end
classbook“页码asc”
结束
类页

这样,您就不必自己指定
Book#pages
方法,默认情况下,它仍将按
page#u编号asc
排序。

对于较新版本的Rails,语法已更改:

class Book < ActiveRecord::Base
    has_many :pages, -> { order "page_number asc" }
end

class Page < ActiveRecord::Base
  belongs_to :book
end
classbook{顺序“页码asc”}
结束
类页