質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1999閲覧

Ruby on railsでデータベースをソートするアプリを作りたいのですが…

TK0107

総合スコア11

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2017/02/27 17:36

編集2017/02/28 13:29

Ruby on rails 4.2.2についての質問です

データベースに商品の一覧を登録して、それを項目についてソートするというアプリを作りたいのですが、

  1. Error:

CpusControllerTest#test_should_get_index:
ActionView::Template::Error: SQLite3::SQLException: no such column: nameasc: SELECT "cpus".* FROM "cpus" ORDER BY nameasc
app/views/cpus/index.html.erb:17:in _app_views_cpus_index_html_erb___572321217057038891_21850840' test/controllers/cpus_controller_test.rb:9:in block in class:CpusControllerTest'

と出てしまいます 原因はincludesを記述していないということらしいのですが、記述してもエラーの内容は変わりませんでした 何か間違った記述をしているのでしょうか?
エラーが出ている箇所は↓です

@cpus = Cpu.includes(:name).all.order(sort_column + '' + sort_direction)

追記:

Ruby

1 def sort_direction 2 %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc" 3 end 4 5 def sort_column 6 Cpu.column_names.include?(params[:sort])? params[:sort] : "name" 7 end

上のsort_direction関数の最後の"asc"を変更するとエラーの内容が変わりました
なぜかnameが先頭に付いていることになっているようで、nameascというカラムは無いということになっているようです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

@cpus = Cpu.all.order(sort_column + ' ' + sort_direction)
と記述を直したところ、正しい挙動になりました

記述ミスしてたみたいです ありがとうございました

投稿2017/02/28 15:28

TK0107

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

no such column: nameasc

nameasc というcolumnはない、と言っています。name column の順に並べたいようですから asc は昇順の意味ですから column の次に1つ以上の空白や改行を入れてい記述しますが、通常は省略します。

投稿2017/02/27 19:57

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問