###実現したいこと
friendsテーブルにデータを登録させたい。(フォロー機能)
###現状
users↔︎friends↔︎farmers
というように、usersとfarmersはN対Nにしております。
###エラー箇所
ActiveRecord::AssociationTypeMismatch in FriendsController#create User(#70277525473660) expected, got "2" which is an instance of String(#70277522570720)
class FriendsController < ApplicationController def create @friend = Friend.new(friend_params)★ここ!! if @friend.save! redirect_to farmer_path(friend_params[:farmer]) else
エラー文は、Userの外部キーがほしいのにもってきたパラメータがStringなのでダメ!と怒られていると解釈しているのですが、viewから送ったのは、value: current_user
で数字ではないのかな??と悩んでおります。
###該当コード
popularsの段階では売り上げ順になっているが、その後はただの商品id順になってしまう。。。 (show.html.erb) <div class="follow_area"> <%= form_for(Friend.new, url: friends_path, html: {class: "follow_farmer"}) do |f|%> <%= f.hidden_field :user, value: current_user.id %> <%= f.hidden_field :farmer, value: params[:id] %> <%= f.submit "フォローする", class:"follow_btn"%> <% end %> </div>
(friends_controller.rb) class FriendsController < ApplicationController def create @friend = Friend.new(friend_params) if @friend.save! redirect_to farmer_path(friend_params[:farmer]) else redirect_to farmer_path(friend_params[:farmer]) end end def destroy end private def friend_params params.require(:friend).permit(:user, :farmer) end end
モデル: farmer.rb has_many :friends, dependent: :destroy
モデル: friend.rb class Friend < ApplicationRecord belongs_to :user belongs_to :farmer end
モデル: user.rb has_many :friends, dependent: :destroy
Friendsテーブル class CreateFriends < ActiveRecord::Migration[5.2] def change create_table :friends do |t| t.references :user, foreign_key: true t.references :farmer, foreign_key: true t.timestamps end end end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/17 12:25
2020/11/17 13:07
2020/11/17 22:48
2020/11/19 14:52
2020/11/19 23:50