
検索結果で表示されたリストを、並べ替えができるようにしたいです。
現在はリンク先をクリックしても、実装できていません。
どこのコードがおかしいのかご教授いただければ幸いですm(_ _)m
=======================
views
=======================
<%= link_to "安い順", :action => 'low' %>
<%= link_to "高い順", :action => 'high' %>
<% @products.each do |product| %>
商品名<%= product.code %>
金額<%= product.price %>
<% end %>
=======================
controller.rb
=======================
def check
@product = Product.all
render :action => 'check'
end
def low
@products = Product.find(:all, :order => "price ASC")
render :action => 'check'
end
def high
@products = Product.find(:all, :order => "price DESC")
render :action => 'check'
end
ご教授よろしくお願い致します。

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

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 になにも設定されていない場合は、表示しないように変えました。

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の記述方法なので、現在は非推奨になっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(再質問)エクセルのマクロボ...
-
秀丸エディタで、同じ記号で囲...
-
CSSのhtmlへの紐付けについ...
-
Ruby 格納
-
Ruby newメソッド
-
1、Rstudioで回帰直線を求める...
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
osCommerce[1054エラー]
-
「arg」は何の略?
-
What class are you in? には何...
-
教えてください。vb5.0
-
class roomとclassroom どちら...
-
pythonのerrorコード
-
HSTLやSSTL等のI/Oピン
-
Csvファイルの最終行を取得する...
-
実行時エラー450:引数の数が一...
-
get() と find() の違いについて
-
Pythonで複数のメソッドをまと...
-
エラー「メソッドまたはデータ...
-
VBA/GetTickCountの49.7日の境...
-
どういうプログラムで組みます...
-
Ruby Selenium 要素の待機
-
テンプレートの特殊化でコンパ...
-
クラス名やモジュール名の競合...
-
ぱいソン
-
例外の再スロー時に、その原因...
-
プログラミング言語 R
おすすめ情報