mysql - 琳达 rails 啧啧 : NoMethodError: undefined method `page' for #<Subject:0x

标签 mysql ruby-on-rails

我正在尝试使用此处找到的 lynda.com 教程来学习 Rails:

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

到目前为止,很容易理解,但我遇到了困难。当学习关联时,我应该看到这个(从类(class)视频中捕获):

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 问题,但其中大多数都讨论了“require”,而我们还没有讨论这一点。我正在运行与讲师相同的 Rails 开发环境(Rails 5.0.0)。他在 Mac 上运行,而我有一台 Windows 10 机器,如果这有什么区别的话。

我不是要求任何人“帮我解决这个问题”,但我只是不知道下一步该去哪里。

最佳答案

您在主题和页面之间使用了 has_many 关联,这意味着您不能使用

subject.page

相反,你应该使用

subject.pages

关于mysql - 琳达 rails 啧啧 : NoMethodError: undefined method `page' for #<Subject:0x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47516738/

相关文章:

mysql - 即使没有显式使用事务,ACID 投诉 SQL 数据库是否仍然为 "ACID"?

ruby-on-rails - 使用cucumber时,如何选择 'test'数据库?

ruby-on-rails - 解决类和 gem 之间的命名空间冲突

ruby-on-rails - Rspec Capybara 套件超时

mysql - 3 Table Join with Clause出现空值

mysql - actullay dd() 如何在 laravel 中工作

mysql相交

php - 在数据库中选择后没有返回

ruby-on-rails - Liquid中的Print_r等效项

ruby-on-rails - Rails CSRF 保护是如何工作的?