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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

1374閲覧

Railsでaccepts_nested_attributes_for使用時に「NameError」が発生する

hotateshijimi

総合スコア8

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/06/17 12:46

編集2022/01/12 10:55

###前提・実現したいこと
初歩的な質問で大変恐縮ですが、ご教示ください。

現在、Railsでアプリケーションを作成しています。
一つの画面から入力した内容で複数テーブルを更新すべく、
accepts_nested_attributes_for を使用して実装したところ、
controller の newメソッドで「NameError」が発生します。

色々試してみましたが、何が原因か分からず質問した次第です。

###発生している問題・エラーメッセージ

NameError in TradesystemsController#new uninitialized constant Tradesystem::Tradecondition ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "trade_conditions_tradesystems" does not exist LINE 5: WHERE a.attrelid = '"trade_conditions_tradesy... : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"trade_conditions_tradesystems"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum

###該当のソースコード
app/controllers/tradesystems_controller.rb

class TradesystemsController < ApplicationController def new @tradesystems = current_user.tradesystems.new #↓この行でエラーが発生 @tradeconditions = @tradesystems.tradeconditions.build end end

app/models/user.rb

class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :indicators, dependent: :destroy has_many :tradesystems, dependent: :destroy end

app/models/tradesystem.rb

class Tradesystem < ActiveRecord::Base belongs_to :user has_and_belongs_to_many :tradeconditions accepts_nested_attributes_for :tradeconditions end

app/models/trade_condition.rb

class TradeCondition < ActiveRecord::Base has_and_belongs_to_many :tradesystems end

###試したこと
当初、「1対多(tradesysytem 1:tradecondition 多」の関係で実装していたためことが間違いかと思い、「多対多」の関係にし、中間テーブルを介して実装しましたが、同じエラーとなりました。
また、エラー行の「tradeconditions」の指定の仕方が誤っていると思い、
「trade_condiotions」や「trade_condiotion」など指定してみましたが、ダメでした。

手がかりになる情報等がありましたら、よろしくお願いいたします。

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

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

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

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

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

ayu

2016/06/20 14:45

具体的なエラー内容を貼り付けた方が、回答をもらいやすくなると思います。 どこのNameエラーかわからないので・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問