ユーザ専用掲示板画面 | eachには配列を渡そう
eachで取り出す対象は「オブジェクトじゃダメ。配列で渡そう」
Before: エラー時
boards_controller.rb
boards_controller.rb
# boards_controller.rb ~~ def index_personal @boards = params[:tag_id].present? ? Tag.find(params[:tag_id]).boards : Board.find_by(user_id: @current_user) # @boards = @boards.page(params[:page]) binding.pry end ~~
index_personal.html.erb
# index_personal.html.erb ~~ <% @boards.each do |board| %> <tr> <td><%= board.id %></td> <td><%= board.title %></td> <td><%= board.name %></td> <td><%= board.created_at.to_s(:datetime_jp) %></td> <td><%= board.updated_at.to_s(:datetime_jp) %></td> <td><%= link_to '詳細', board, class: 'btn btn-outline-dark' %> <td><%= link_to '削除', board, class: 'btn btn-outline-dark', method: :delete %> </tr> <% end %> ~~
エラーメッセージ(&お気持ち)
ActiveRecordを使ってデータにアクセスすると、user_idでフィルターされたデータがちゃんと@boardsに渡されていた。
しかしview側では, eachメソッドが未定義だと言われる。なんでってなった。
NoMethodError in Boards#index_personal Showing /app/app/views/boards/index_personal.html.erb where line #35 raised: undefined method `each' for #<Board:0x00007fcf4e39f010>
After: 解決時ver!
# boards_controller.rb ~~ def index_personal @boards = params[:tag_id].present? ? Tag.find(params[:tag_id]).boards : Board.where(user_id: @current_user) # @boards = @boards.page(params[:page]) binding.pry end ~~
# index_personal.html.erb # 同じなので略
eachにオブジェクトは渡さない
eachには配列で渡す。そうしないと一つ一つを取り出してループ変数に格納できない
これでユーザごとにMy掲示板を表示できたわ!!!!