Ma2Matsu0121
@Ma2Matsu0121

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

(Ruby on Rails)マイページで他モデルで保存したの情報を表示したい

解決したいこと

現在Ruby on Railsでポートフォリオ作成中の初学者です。
マイページにおいて、他モデルで保存した情報を呼び出して上位2件といった形で表示しようと考えているのですが、エラーが出てしまい、そもそもうまく表示がされませんでした。
原因としては
①users_controller.rbの@schedulesが複数形になっていることで表示がなされない?
②複数の情報をviewファイルに呼び出しているのでeachメソッドを使うべき?
など色々試したり仮説を立てましたが、うまくまとまらず、迷走してしましましたので、原因がわかる方がいらっしゃいましたらご教授いただけますと幸いです。
なお、モデルでのアソシエーションは完了しています。

発生している問題・エラー

スクリーンショット 2022-07-22 15.56.02.png

該当するソースコード

app>controllers>users_controller.rb

class UsersController < ApplicationController
   
   def show
    @nickname = current_user.nickname
    @email = current_user.email
    @sex_id = current_user.sex.name
    @schedules = current_user.schedules
   end

end

おそらく "@schedules = current_user.schedules"をなんとかしないといけないと感じています。

<div class="show-edit-content">
      <div class="content-item">よく飲むお酒</div>
        <div class="item-result">
        <%= @schedules.amounts %>
        </div>
    </div>

自分で試したこと

ターミナルで、そもそもparamsが渡っていているかを確認しました。
一応紐づいた情報は渡ってきているようです。

ターミナル

From: /Users/matsuyamayuuki/projects/alcorhythm/app/controllers/users_controller.rb:4 UsersController#show:

    3: def show
 => 4:    binding.pry
    5:  @nickname = current_user.nickname
    6:  @email = current_user.email
    7:  @sex_id = current_user.sex.name
    8:  @schedules = current_user.schedules
    9: end

[1] pry(#<UsersController>)> @schedules = current_user.schedules
  Schedule Load (0.7ms)  SELECT `schedules`.* FROM `schedules` WHERE `schedules`.`user_id` = 9
  ↳ app/controllers/users_controller.rb:4:in `show'
=> [#<Schedule:0x00007fa6d0a88e68
  id: 1,
  alcohol_id: 5,
  percentage: 4,
  amount: 600,
  start_time: Fri, 22 Jul 2022,
  user_id: 9,
  created_at: Fri, 22 Jul 2022 15:00:43 JST +09:00,
  updated_at: Fri, 22 Jul 2022 15:00:43 JST +09:00>,
 #<Schedule:0x00007fa6d0a88828
  id: 2,
  alcohol_id: 3,
  percentage: 5,
  amount: 600,
  start_time: Wed, 20 Jul 2022,
  user_id: 9,
  created_at: Fri, 22 Jul 2022 15:28:08 JST +09:00,
  updated_at: Fri, 22 Jul 2022 15:28:08 JST +09:00>]

0

1Answer

$ rails console
> user = User.find ...
> x = user.schedules
> x.class
> x.count
> x.to_a
> x.respond_to? :amounts
> x.first.class
> x.first.respond_to? :amounts
> x.first.amounts

多分こうやって順に追っていって、user.schedulesというものがどういう状態のオブジェクトなのかをよく頭の中で展開出来るようになれば楽です。

0Like

Comments

  1. @Ma2Matsu0121

    Questioner

    ありがとうございます!!
    順に追っていっては把握することができました!
    今後困ったときは、この方法を試してみたいと思います!!

Your answer might help someone💌