2017-11-27 14 views
0

私はここで見つけるlynda.comのチュートリアルを使用して、レールを習得しようとしています:リンダRailsのツタンカーメン:NoMethodError:#<件名のための未定義のメソッド `ページ」:0xの

https://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-5-Essential-Training/500551-2.html

それがとても簡単となっていますこれまでのところ、私は悩んでしまった。協会について学ぶとき、私はこの(もちろんビデオからのキャプチャ)を参照してくださいになってる:

Instructor Success

代わりに、私は次のエラーを取得:

Student Failure

NoMethodError: undefined method `page' for #<Subject:0x

を私は使用しています講師が使用するのと同じpage.rbとsubject.rb:

# page.rb file 
class Page < ApplicationRecord 

    belongs_to :subject, { :optional => false } 
    has_many :sections 
    has_and_belongs_to_many :admin_users 

end 


# subject.rb file 
class Subject < ApplicationRecord 

    has_many :pages 

    scope :visible, lambda { where(:visible => true) } 
    scope :invisible, lambda { where(:visible => false) } 
    scope :sorted, lambda { order("position ASC") } 
    scope :newest_first, lambda { order("created_at DESC") } 
    scope :search, lambda {|query| where(["name LIKE ?", "%#{query}%"]) } 

end 

はとMySQLデータベースには、次のようになります。

mysql> SHOW TABLES; 
+----------------------------------+ 
| Tables_in_simple_cms_development | 
+----------------------------------+ 
| admin_users_pages    | 
| ar_internal_metadata    | 
| pages       | 
| schema_migrations    | 
| section_edits     | 
| sections       | 
| subjects       | 
| users       | 
+----------------------------------+ 
mysql> DESCRIBE pages; 
+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| subject_id | int(11)  | YES | MUL | NULL |    | 
| name  | varchar(255) | YES |  | NULL |    | 
| permalink | varchar(255) | YES | MUL | NULL |    | 
| position | int(11)  | YES |  | NULL |    | 
| visible | tinyint(1) | YES |  | 0  |    | 
| created_at | datetime  | NO |  | NULL |    | 
| updated_at | datetime  | NO |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 
mysql> DESCRIBE subjects; 
+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| name  | varchar(255) | YES |  | NULL |    | 
| position | int(11)  | YES |  | NULL |    | 
| visible | tinyint(1) | YES |  | 0  |    | 
| created_at | datetime  | NO |  | NULL |    | 
| updated_at | datetime  | NO |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 

私はNoMethodErrorに関連するかなりの数のstackoverflowの質問を通して見てきたが、それらのほとんどが「必要」について話して、我々はまだことをカバーしていません。私はインストラクターと同じレール開発環境(Rails 5.0.0)を実行しています。彼はMacで動作しており、Windows 10マシンを持っています(違いがあれば)。

私は「誰かにこの問題を解決してもらう」ことを求めていませんが、次に見たい場所はわかりません。

+0

私のデシベル、私はこのエラーを得た初めて判明を使用する必要があります

subject.page 

を使用できないことを意味している対象とページの間にhas_manyの関連付けを使用しています適切に設定されたページテーブルが欠落していました。その後、私はそれを修正しようとしていたので、1対1の関係を取り戻すために更新されたpage.rbファイルとsubject.rbファイルの最終設定をインポートしました。試してみることを手伝ってくれてありがとう@rajbir。 –

答えて

1

あなたがあなたの代わりにあなたが

subject.pages 
+0

それはうまくいくようでした、ありがとうございます。私はインストラクターがどうやってそれを逃したのだろうと思っています。また、インストラクターの 'nil'の代わりに空の配列を返します。 –

+1

おそらく、あなたは 'has_one:pages'の代わりに' has_one:page'を持っていなければなりません。 – Maxence

関連する問題