前提・実現したいこと
railsでlink_toによってパラメータviewからをcontrollerへ受け渡したいのですが、エラーが出てしまいます。
実現したいことはusers/show.html.erbで使っている@userをrooms/show.html.erbでも使うことです。
方法として
users/show.html.erbにて<%= link_to 'チャットルームへ移動', room_path(@roomId), talker_id: @user.id %>によって@user.idを:talker_idとして
rooms_controller.rbにて@user = User.find(params[:talker_id])としてパラメーターを受け取り、rooms/show.html.erbで@userを使おうと考えています。
発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in RoomsController#show Couldn't find User with 'id'= Extracted source (around line #12): 10 def show 11 @room = Room.find(params[:id]) 12 @user = User.find(params[:talker_id]) 13 if Entry.where(:user_id => current_user.id, :room_id => @room.id).present? 14 @messages = @room.messages 15 @message = Message.new Rails.root: C:/Users/yutag/Desktop/otsukai2 Application Trace | Framework Trace | Full Trace app/controllers/rooms_controller.rb:12:in `show' Request Parameters: {"id"=>"2"}
該当のソースコード
users/show.html.erb
erb
1 <div class="chat"> 2 <% if @user.id == current_user.id %> 3 <%= @user.name %> 4 <% else %> 5 <% if @isRoom == true %> 6 <%= link_to 'チャットルームへ移動', room_path(@roomId), talker_id: @user.id %> 7 <% else %> 8 <%= form_for @room do |f| %> 9 <%= fields_for @entry do |e| %> 10 <%= e.hidden_field :user_id, :value=> @user.id %> 11 <% end %> 12 <%= f.submit "おつかいを依頼する", class: 'button' %> 13 <% end %> 14 <% end %> 15 <% end %> 16 </div>
users_controller.rb
ruby
1 def show 2 @user=User.find(params[:id]) #user/showのユーザーid 3 @currentUserEntry=Entry.where(user_id: current_user.id) #current_userの全entryレコード 4 @userEntry=Entry.where(user_id: @user.id) #user/showのユーザーidの全entryレコード 5 if @user.id == current_user.id 6 else 7 @currentUserEntry.each do |cu| #このif文はshowのユーザーとcurrent_userの共通するentryのidを探している 8 @userEntry.each do |u| 9 if cu.room_id == u.room_id then 10 @isRoom = true #すでにroomがある 11 @roomId = cu.room_id 12 end 13 end 14 end 15 if @isRoom 16 else #roomがまだない場合、新しくroomとentryを作る 17 @room = Room.new 18 @entry = Entry.new 19 end 20 end 21
###試したこと
:talker_idを含む文を消すとページ遷移するので、
パラメータの受け渡しがうまくいっていないと考えられます。
補足情報(FW/ツールのバージョンなど)
Rails 5.1.7
原因を特定するのに判断材料が足りていないかもしれないので、その場合はお申し付けくださいませ。
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/22 05:00