0

このエラーが発生する理由がわかりません

undefined method `sector_id' for #<Portfolio:0x007fe17c2e3848>

私はポートフォリオモデルとセクターモデルを持っています。

class Portfolio < ActiveRecord::Base
  belongs_to :sector
  attr_accessible :overview, :title, :sector_id
end



class Sector < ActiveRecord::Base
  has_many :portfolios
  attr_accessible :name
end

私のルート

resources :portfolios do
  resources :sectors
end

したがって、新しいポートフォリオを作成するフォーム内には、この collection_select があります

<%= f.label :sector_id, "Choose Sector", :class => 'title_label' %><br>
<%= f.collection_select(:sector_id, Sector.all, :id, :name, :prompt => "Please Select a Sector") %>

これは私が以前に何度も行ったことであり、うまくいきました。なぜこのエラーが発生するのか誰にも分かりますか?

私が考えることができる唯一のことは、ポートフォリオのコントローラーを Portfolios と呼んでいるということです。私は常に複数形と単数形のコントローラー名を混同しています。これは私の場合に違いがありますか?

4

1 に答える 1

5

テーブル「portfolios」に列「sector_id」を追加する移行をまだ実行していない可能性があります。MySQL を使用している場合は、データベースに接続してテーブルを確認します ( show create table portfolios;)。他の rdbms を使用している場合は、適切な方法を使用してデータベース サーバーからこの情報を取得してください。または、Rails コンソール ( rails c) に入力してPortofolio、出力される属性を確認します。含まれていますsector_idか?

于 2013-08-05T11:24:35.053 に答える