🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

解決済

4回答

1447閲覧

rails orderの使い方

yupapapa

総合スコア24

Ruby on Rails

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

0グッド

1クリップ

投稿2019/11/10 15:41

railsで投稿アプリを作成しているのですが、あるユーザーの投稿一覧ページ(show)で投稿が新しい順で表示させたいのですが、@users = User.find_by(id: params[:id])で投稿を取得している時はどのようにして、order(created_at: :desc)を記述すれば良いのですか?

userscontroller

1 def index 2 @users = User.all 3 end 4 5 def show 6 @users = User.find_by(id: params[:id]) 7 end

showhtmlerb

1 <% @users.posts.each do |post| %>

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

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

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

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

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

guest

回答4

0

質問を読みなおしてみて下さい
(1)「あるユーザーの投稿一覧ページ」(2)「(show)」で投稿が新しい順で表示させたいのですが、(3)「@users = User.find_by(id: params[:id])」で(4)「投稿」を取得している時

(1)と(2) 一覧ページは通常indexでshowではないと思います
(3)と(4) User から取れるのはユーザであって、投稿 ではないです

何をしたいのか、は想像ついていますが、正しい質問をしないと正しい答えは得られないので、そこ直して下さい

投稿2019/11/10 23:34

winterboum

総合スコア23567

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

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

Mugheart

2019/11/11 00:31

Twitterのようなアプリケーションを作成していると思えば、ユーザー詳細に投稿の一覧があってもおかしくはないかと。
winterboum

2019/11/11 00:49

はい、そういうことだろうとは推測しましたが、そういう質問になっていないなぁと。 あと、'(3)(4)のところ。 この質問はシンプルな構成での質問なので推測付きますが、もう少し込み入ってきた時にこのような書き方のままではまずいなぁと思った次第
Mugheart

2019/11/11 01:03

なるほど、しかし質問の内容の推測ができるのであれば回答するべきなのでは? (初めての質問みたいですし、)質問に対するダメ出しは回答に添えて注意してあげるくらいでいいと思います。 そもそも僕の指摘があまり適切ではありませんでした、すみません。 回答を含まないようなものは修正依頼に書くべきです。
winterboum

2019/11/11 01:06

それも一理あります。 私もそうしたりしなかったり、回答に書いたり、コメントに書いたり、揺らいでます
guest

0

ベストアンサー

適切な回答がなさそうなので回答します。
結論を言うとPost::ActiveRecord_Relationに対してorderをすれば良いです。

erb

1<% @users.posts.order(created_at: :desc).each do |post| %>

蛇足ですが、変数名には気を遣いましょう。

rb

@users = User.find_by(id: params[:id])

@userという単数形の変数名を用いるべきです。

投稿2019/11/11 00:28

編集2019/11/11 00:29
Mugheart

総合スコア2349

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

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

yupapapa

2019/11/11 03:00

解決しました!ありがとうございました! 改めて自分の質問を読み直し、指摘された通り不十分な質問でした。 以後気をつけます。
guest

0

User.find_by(id: params[:id]) だとそもそも1つしかレコードを出来ないので、 order(created_at: :desc) する必要もない気がするのですが、いかがでしょうか?
viewでどのような表示をさせたいのでしょうか?

投稿2019/11/10 16:20

shunke434343

総合スコア22

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

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

Mugheart

2019/11/11 00:30

質問者はユーザーではなく投稿を新しい順で表示させたいようです。
guest

0

Ransack使いましょう

投稿2019/11/10 16:09

jotaku

総合スコア40

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問