Ruby on rails 当内容来自其他表时,Rails仅按ID排序?

Ruby on rails 当内容来自其他表时,Rails仅按ID排序?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我是RoR初学者,我的“应用程序”有问题 我有一张叫做“annonces”的桌子和一张叫做“marques”的桌子。 (对于博客应用程序来说,这就像“帖子”和“分类”) 我正在关注railscasts的第228集,但是当我想排序时 “Marque”列,它按ID排序,而不是按名称排序 所以问题是,如何使用多个 桌子 它更像是“单击标题按该属性排序” 例如,如果单击列的名称(标记),则应 按字母顺序排列ASC和DESC:奥迪-宝马-大众/重新单击: 大众-宝马-奥迪 但目前,Rails对我的排序如下

我是RoR初学者,我的“应用程序”有问题

我有一张叫做“annonces”的桌子和一张叫做“marques”的桌子。 (对于博客应用程序来说,这就像“帖子”和“分类”)

我正在关注railscasts的第228集,但是当我想排序时 “Marque”列,它按ID排序,而不是按名称排序

所以问题是,如何使用多个 桌子

它更像是“单击标题按该属性排序”

例如,如果单击列的名称(标记),则应 按字母顺序排列ASC和DESC:奥迪-宝马-大众/重新单击: 大众-宝马-奥迪

但目前,Rails对我的排序如下(ID):1-2-3//3-2-1。结果是:大众-奥迪-宝马//宝马-奥迪/大众

就像我说的,我正在关注这个视频:

您可以在此页面上看到结果的缩略图

但在我的例子中,它有多个表(Marque、MODEL、Energie…)

当所有内容都在同一张表中时,屏幕播放效果完美

但我想用其他表中的内容来做

在我的ANNU控制器中:

  helper_method :sort_column, :sort_direction
  def index
    @annonces = Annonce.order(sort_column + " " + sort_direction)
    @modeles = Modele.all
    @marques = Marque.order(sort_column + " " + sort_direction)
    @energies = Energy.all

  end
...
...
 private

  def sort_column
  Annonce.column_names.include?(params[:sort]) ? params[:sort] : 
"marque_id"
  end

  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : 
"asc"
  end
end
class MarquesController < ApplicationController
  helper_method :sort_column, :sort_direction

  def index
    @marques = Marque.order(sort_column + " " + sort_direction)
  end
...
...
  private

  def sort_column
    Marque.column_names.include?(params[:sort]) ? params[:sort] : 
"marque"
  end

  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : 
"asc"
  end
end
对于“def索引”,我尝试了:

    @annonces = Annonce.order(sort_column + " " + sort_direction)
    @marques = Marque.all

在我的品牌控制器中:

  helper_method :sort_column, :sort_direction
  def index
    @annonces = Annonce.order(sort_column + " " + sort_direction)
    @modeles = Modele.all
    @marques = Marque.order(sort_column + " " + sort_direction)
    @energies = Energy.all

  end
...
...
 private

  def sort_column
  Annonce.column_names.include?(params[:sort]) ? params[:sort] : 
"marque_id"
  end

  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : 
"asc"
  end
end
class MarquesController < ApplicationController
  helper_method :sort_column, :sort_direction

  def index
    @marques = Marque.order(sort_column + " " + sort_direction)
  end
...
...
  private

  def sort_column
    Marque.column_names.include?(params[:sort]) ? params[:sort] : 
"marque"
  end

  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : 
"asc"
  end
end
品牌:

    create_table :marques do |t|
      t.string :marque

      t.timestamps
我希望这将有助于

我将通过以下操作创建所有这些:rails g scaffold marque marque:string 或:rails g cannonce markue_id:integer[…]

谢谢


++++

检查哪些可以为您提供很好的帮助。如果想查看使用它的项目,请查看。

感谢Ryan,他来自铁路公司的“为我指明了正确的方向”;)

在我的annonces\u控制器中:

 def index
@annonces = Annonce.joins(:marque, :modele, :energy).order(sort_column + "  " + sort_direction)
@modeles = Modele.all
@marques = Marque.all
@energies = Energy.all

end
我在私人部分替换了这个:

  private

  def sort_column
    params[:sort] || "marque" && "modele" && "energy"
  end

谢谢

我正在尝试使用Active Admin,但我的类别显示如下:#例如大众汽车欧洲工商管理学院。怎么了?你有一个带有品牌属性的模型品牌?它正在显示一个Marque对象,您可能想显示一个Marque属性/字段。在我的模型Marque中,我有一个:attr_accessible:Marque-要显示,它是一个字段://这不对吗?
    create_table :marques do |t|
      t.string :marque

      t.timestamps
 def index
@annonces = Annonce.joins(:marque, :modele, :energy).order(sort_column + "  " + sort_direction)
@modeles = Modele.all
@marques = Marque.all
@energies = Energy.all

end
  private

  def sort_column
    params[:sort] || "marque" && "modele" && "energy"
  end