• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:rails3初心者 検索結果を並べ変えたい)

Rails3初心者のための検索結果並べ替えの方法

このQ&Aのポイント
  • 検索結果で表示されたリストを並べ替え可能にしたい場合、Rails3を使用しています。現在、リンクをクリックしてもリストが並べ替えられません。どの部分のコードが問題なのか教えてください。
  • Rails3初心者のための検索結果並べ替えの方法は、リンクをクリックするとリストが並べ替えられるようにしたい場合に役立ちます。現在は実装されておらず、どのコードが間違っているのか教えていただけますか?
  • Rails3の検索結果のリストをクリックして並べ替えたい場合、現在は正しく動作していません。どのコードが問題なのか教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

すみません。#2の回答も的外れでした。 viewの@productsに正しい値が設定されていないのは、 def check @product = Product.all   render :action => 'check' end の @product = Product.allが原因です。 これを @products = Product.all として下さい。(@productを@productsにする) 尚、view側も見やすくするために =================================== <%= link_to "安い順", :action => 'low' %> <%= link_to "高い順", :action => 'high' %> </br>               ・・・ここに改行をいれる <% @products.each do |product| %> 商品名<%= product.code %> 金額<%= product.price %></br>  ・・・ここに改行をいれる <% end %> =================================== とすると良いかと思います。

_rin
質問者

お礼

ご教授ありがとうございます。 def checkを修正して実装できました。 >@product = Product.allが原因です。 お手間をおかけしまして、すみません。 ありがとうございました。 @products = Product.order("price") @products = Product.order("price DESC")

その他の回答 (2)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

すみません。#1の回答は的外れでした。 @products = Product.find(:all, :order => "price ASC") と @products = Product.order('price ASC') は同じ結果が得られますので、ソートの指定が誤っているわけではないようです。 (今後は、後者を推奨します) こちらで、viewをその通りに作成し、実行したところ NoMethodErrorが発生しましたので、それが原因かと思います。 view側を以下のように修正してください。 ================================== <%= link_to "安い順", :action => 'low' %> <%= link_to "高い順", :action => 'high' %> <% if @products %> ・・・・・・・この行を追加 <% @products.each do |product| %> 商品名<%= product.code %> 金額<%= product.price %></br>   ・・・本質的な部分ではないが見やすくするために</br>を追加 <% end %> <% end %> ・・・・・・この行を追加 =============================== @products になにも設定されていない場合は、表示しないように変えました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

以下のようにしてください。 @products = Product.find(:all, :order => "price ASC") を @products = Product.order('price ASC') @products = Product.find(:all, :order => "price DESC") を @products = Product.order('price DESC') rails3.x では、このような書き方に変わっています。 Product.find(:all, :order => "price DESC")の書き方は、 rails2.xの記述方法なので、現在は非推奨になっています。

専門家に質問してみよう