我正在尝试显示教师的名称,而不仅仅是ID。
除了我试图显示教师姓名的部分外,其他所有工作都有效。我得到一个错误说"未定义的方法" 。
我知道我做错了什么,但即使我已经看了好几个小时,我根本想不通。我是一个完全初学者,我真的很感谢你的帮助。
谢谢。
show.html.erb
€11853724112355
student.rb
<p id="notice"><%= notice %></p>
<!-- notice is a ruby method, and its results comes here inside the tags
used when you want the errow page to show on the next page -->
<p>
<strong>Name:</strong>
<%= @student.name %>
</p>
<p>
<strong>Faculty:</strong>
<%= @student.faculty_id %>
<%= @name.faculty_id %>
</p>
<strong>Grade:</strong>
<%= @student.grade%>
</p>
<%= link_to 'Edit', edit_student_path(@student) %> |
<%= link_to 'Back', students_path %>
faculty.rb
class Student < ActiveRecord::Base
belongs_to :faculty
end
class Name < ActiveRecord::Base
belongs_to :faculty
end
这是我的students_controler.rb
class Faculty < ActiveRecord::Base
has_many :student
# belongs_to :faculty
has_many :name
end
错误是未定义的方法`faculty_id&#39;为零:NilClass
答案 0 :(得分:3)
我正在尝试显示教师的姓名,而不仅仅是ID
由于您是初学者,请让我为您解释一下......
-
您目前正在调用@student.faculty_id
这是@student
对象的foreign_key
- 将此student
对象链接到相应faculty
对象的标识符。
简而言之,这意味着此属性是student
架构的一部分 - 您需要一个属于faculty
架构的属性。因此,您需要使用delegate
从name
调用faculty
属性,或直接调用它:
@student.faculty.name
The above是如何设置的:
#app/models/student.rb
class Student < ActiveRecord::Base
belongs_to :faculty
end
#app/models/faculty.rb
class Faculty < ActiveRecord::Base
has_many :students
end
以上内容可让您拨打以下电话:
#app/controllers/students_controller.rb
class StudentsController < ApplicationController
def show
@student = Student.find params[:id]
end
end
#app/views/students/view.html.erb
<%= @student.faculty.name %>
你必须记住Rails在relational database之上工作。这可以通过允许您通过外键调用相关对象来实现。
如果需要,我可以解释更多。
答案 1 :(得分:0)
<%= @name.faculty_id %>
无效。
在你的控制器中急切加载教师
def show
@student = Student.includes(:faculty)
end
要么
<% if @student.faculty.present? %>
<%= @student.faculty.name %>
<% end %>
或者您可以获得控制器中的教员并将其分配给变量
def show
@student = Student.includes(:faculty)
@faculty = @student.faculty
end
然后你可以使用
<% if @faculty.present? %>
<%= @faculty.name %>
<% end %>
答案 2 :(得分:0)
我看到的错误是
class Faculty < ActiveRecord::Base
has_many :student
# belongs_to :faculty
has_many :name
end
应该是
class Faculty < ActiveRecord::Base
has_many :students
# belongs_to :faculty
has_many :names
end
我不知道你的错误是由于这个或不是但has_many不是单数形式