###実現したいこと
現在、Post ⇆ Group_Post ⇆ Group という形で、所属先のグループと所属するポストの関係を構築しております。
Postをグループに追加するにあたり、パラメーター値を期待される型で渡せていないため、下記のエラーが発生します。
こちらを解決したいです
error
1ActiveRecord::AssociationTypeMismatch in GroupsController#add 2Post(#70236412025920) expected, got nil which is an instance of NilClass(#70236376538660)
###コード
View
1<%= link_to("Post追加", "/group/#{@group.id}/add", method: :post, post: post) %>
Controller
1def add 2 @group = Group.find_by(id: params[:id]) 3 @post = Post.find_by(id: params[:post]) 4 @group.posts << @post 5 render :index 6 end
恐らく、Viewのlink_toでパラメーター定義がうまくできていないか、Contorllerで受け取りがうまくできていないため、nilになっていると思います。調べましたが、解決方法がわからずにいます。
お分かりの方、ぜひお願いいたします。
###追記
インデントがうまくできておらず申し訳ありません。
Routesを追記しました。
/group/:id/addのprefixは省略されていました。
routes
1post "group/:id/join" => "groups#join" 2post "group/:id/resign" => "groups#resign" 3get "group/:id/mypic" => "groups#mypic" 4post "group/:id/add" => "groups#add" 5resources :groups, only: [:index, :new, :show, :create, :edit, :update, :destroy]
console
1 POST /group/:id/join(.:format) groups#join 2 POST /group/:id/resign(.:format) groups#resign 3 GET /group/:id/mypic(.:format) groups#mypic 4 POST /group/:id/add(.:format) groups#add 5groups GET /groups(.:format) groups#index 6 POST /groups(.:format) groups#create 7new_group GET /groups/new(.:format) groups#new 8edit_group GET /groups/:id/edit(.:format) groups#edit 9group GET /groups/:id(.:format) groups#show 10 PATCH /groups/:id(.:format) groups#update 11 PUT /groups/:id(.:format) groups#update 12 DELETE /groups/:id(.:format) groups#destroy
###追記2
config/routes.rb
Rails.application.routes.draw do get "/login" => "users#login_form" post "login" => "users#login" post "logout" => "users#logout" post "users/:id/update" => "users#update" get "users/:id/edit" => "users#edit" post "users/create" => "users#create" get "signup" => "users#new" get 'users/index' => "users#index" get "users/:id" => "users#show" get 'posts/index' => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" post "posts/:id/update" => "posts#update" post "posts/:id/destroy" => "posts#destroy" post "group/:id/join" => "groups#join" post "group/:id/joinshow" => "groups#joinshow" post "group/:id/resign" => "groups#resign" get "group/:id/mypic" => "groups#mypic" post "group/:id/add" => "groups#add" resources :groups, only: [:index, :new, :show, :create, :edit, :update, :destroy] get "/" => "home#top" get "about" => "home#about" end
rails routes
Prefix Verb URI Pattern Controller#Action login GET /login(.:format) users#login_form POST /login(.:format) users#login logout POST /logout(.:format) users#logout POST /users/:id/update(.:format) users#update GET /users/:id/edit(.:format) users#edit users_create POST /users/create(.:format) users#create signup GET /signup(.:format) users#new users_index GET /users/index(.:format) users#index GET /users/:id(.:format) users#show posts_index GET /posts/index(.:format) posts#index posts_new GET /posts/new(.:format) posts#new GET /posts/:id(.:format) posts#show posts_create POST /posts/create(.:format) posts#create GET /posts/:id/edit(.:format) posts#edit POST /posts/:id/update(.:format) posts#update POST /posts/:id/destroy(.:format) posts#destroy POST /group/:id/join(.:format) groups#join POST /group/:id/joinshow(.:format) groups#joinshow POST /group/:id/resign(.:format) groups#resign GET /group/:id/mypic(.:format) groups#mypic POST /group/:id/add(.:format) groups#add groups GET /groups(.:format) groups#index POST /groups(.:format) groups#create new_group GET /groups/new(.:format) groups#new edit_group GET /groups/:id/edit(.:format) groups#edit group GET /groups/:id(.:format) groups#show PATCH /groups/:id(.:format) groups#update PUT /groups/:id(.:format) groups#update DELETE /groups/:id(.:format) groups#destroy GET / home#top about GET /about(.:format) home#about
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 19:39
2020/03/03 23:28
2020/03/04 06:56 編集
2020/03/04 10:10
2020/03/04 10:36
2020/03/04 11:17
2020/03/04 11:28
2020/03/04 11:41
2020/03/04 12:10
2020/03/04 14:19
2020/03/09 16:59