2012-03-19 7 views
1

Railsで単一カラムのテーブルを並べ替えることができません。各行は単一のオブジェクト(記事)を表し、すべての属性(name,content,created_at,userなど)を含みます。検索機能は正常に動作しますが(Article.where)、表を任意の属性、つまりArticle.order('attribute')で並べ替えることはできません。私が変更できないデフォルトはcreated_at descです。私は何か見落としていますか?テーブルをレールで並べ替えることができません

def index 
    @title="Home" 
    if params[:search] 
     @search=params[:search] 
     @articles=Article.where('name LIKE ? OR category LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%").paginate(:per_page => 15, :page => params[:page]) 
    else 
     @articles=Article.order('name').paginate(:per_page => 15, :page => params[:page]) 
    end 
end 

とビュー:

<table> 
    <%= render @articles%> 
</table> 

<%= will_paginate @articles, :previous_label => "Prev", :next_label => "Next" %> 
+0

OT:名前付きプレースホルダを使って 'where'を少し良くし、LIKEは常に大文字と小文字を区別するわけではありませんので、すべてをダッシュ​​ダウンすることができます:' .where( 'lower(name)like:pat or lower pat '、:pat => "%#{params [:search] .downcase}%") 'のように、 –

+0

ありがとう..私はあなたの提案を取り入れます –

答えて

1

使用reorderは、任意のデフォルトの順序を上書きする

は、ここに私のコントローラです。

Article.reorder('name').paginate(:per_page => 15, :page => params[:page])

+0

それは働いた!ああ、私はまったく単純な間違いで時間を無駄にしたと信じていません。ありがとうございます –

-1

私は、これらの問題のための私の宝石の簡単な検索をお勧めします。それは単純すぎるかもしれませんが、一発の価値があります。

+0

*あなたの宝石がどのように役立つかを記述できますか?短いコードサンプルは不思議に過ぎません。ありがとう! –

関連する問題