質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1259閲覧

フォームから中間テーブルへデータを登録しようとするとエラーになる

abab7200

総合スコア120

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/01/08 00:55

やりたい事:記事を登録した際に複数のカテゴリーを紐付けるようにしたい。

modelの関係
Article←CategoriesArticle→Category

●詰まっている所●
Articleフォームでデータ登録したと同時にCategoriesArticle(中間テーブル)へデータ登録される用にしたいが、ストロングパラメーターの所が301でエラーになってしまいます

controllerの部分のcreateの処理かnewの処理が原因かと思うのですが、エラーの切り分けができなかった為どなたかご教授いただければ存じます。

■modelの関係■
Article←CategoriesArticle→Category

Article.model

ruby

1class Article < ActiveRecord::Base 2 belongs_to :category, inverse_of: :articles 3 4 has_many :categories_articles 5 has_many :categories, through: :categories_articles 6 accepts_nested_attributes_for :categories_articles 7end

Category.model

ruby

1class Category < ActiveRecord::Base 2 has_many :articles, inverse_of: :category 3 4 has_many :categories_articles 5 has_many :articles, through: :categories_articles 6end

CategoriesArticle.Model(中間テーブル)

ruby

1class CategoriesArticle < ActiveRecord::Base 2 belongs_to :category 3 belongs_to :article 4end 5

articleController

ruby

1def new 2 @article = Article.new 3 @article.categories_articles.build 4 end 5 6 def create 7 @article = Article.new(article_params) 8   ... 9 end 10 11private 12 def article_params 13 params.require(:article).permit(:title, :categories_articles => [:category_id]) 14 end

article.form

ruby

1- url = @article.new_record? ? dashboards_path : dashboard_path 2 3= simple_form_for(@article, url: url) do |f| 4 = f.input :title, maxlength:'60' 5 = f.fields_for :categories_articles do |fc| 6 = fc.select :category_id, Category.all.map{|o| [o.name, o.id]}

フォームParameters

Parameters: {"utf8"=>"✓", "authenticity_token"=>"Oq4VCC84YaSHkPgFi8++oC8OQq/O+EVkkHNHtvcQiQK2ICtC2IPC7ez3W1O5M+7aUc9ziI0goKypCdYBLpVp9A==", "article"=>{ "title"=>" ","categories_articles_attributes"=>{"0"=>{"category_id"=>"1"}} Completed 302 Found in 121ms (ActiveRecord: 38.5ms)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ストロングパラメーターの中間テーブルへ値を引き渡す設定に誤りがあったようです。

articleController

ruby

1 def article_params 2 params.require(:article).permit(:title, :categories_articles_attributes => [:category_id]) 3 end 4

投稿2018/01/08 04:08

abab7200

総合スコア120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問