在新控制器方法中使用form_for时未定义的方法 [英] undefined method while using form_for in New controller method
本文介绍了在新控制器方法中使用form_for时未定义的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在为New controller方法呈现表单时出现此错误:
Im getting this error on rendering the form for New controller method:
#的未定义方法`teacher_id' 提取的源(第8行附近):
undefined method `teacher_id' for # Extracted source (around line #8):
<table summary="Student form fields">
<tr>
<th>Teacher ID</th>
<td><%= f.number_field :teacher_id %></td> # this is line 8
</tr>
<tr>
<th>Parent ID</th>
这是new.html.erb:
This is new.html.erb:
<h1>Add A Student</h1>
<%= form_for @student, :url => { :action => 'create'}, :html => { :multipart => true } do |f| %>
<table summary="Student form fields">
<tr>
<th>Teacher ID</th>
<td><%= f.number_field :teacher_id %></td>
</tr>
<tr>
<th>Parent ID</th>
<td><%= f.number_field :parent_id %></td>
</tr>
<tr>
<th>FirstName</th>
<td><%= f.text_field :firstname %></td>
</tr>
<tr>
<th>LastName</th>
<td><%= f.text_field :lastname %></td>
</tr>
<tr>
<th>Date of Birth</th>
<td><%= f.date_field :dob %></td>
</tr>
<tr>
<th>Email</th>
<td><%= f.email_field :email %></td>
</tr>
<tr>
<th>Cellphone</th>
<td><%= f.telephone_field :cellphone %></td>
</tr>
<tr>
<th>Username</th>
<td><%= f.text_field :username %></td>
</tr>
<tr>
<tr>
<th>Password</th>
<td><%= f.password_field :password %></td>
</tr>
<tr>
<th>Confirm Password</th>
<td><%= f.password_field :password_confirmation %></td>
</tr>
<tr>
<th>Address Street#</th>
<td><%= f.text_field :addr_streetno %></td>
<th>Apt #</th>
<td><%= f.number_field :addr_aptno %></td>
</tr>
<tr>
<th>City</th>
<td><%= f.text_field :addr_city %></td>
<th>State</th>
<td><%= f.text_field :addr_state %></td>
<th>Zip</th>
<td><%= f.number_field :addr_zip %></td>
</tr>
<tr>
<th>Photo</th>
<td><%= f.file_field :photo %></td>
</tr>
</table>
<%= f.submit 'Create Student' %>
<% end %>
<% if @student.errors.any? %>
<ul class="Signup_Errors">
<% for message_error in @student.errors.full_messages %>
<li>* <%= message_error %></li>
<% end %>
</ul>
<% end %>
</div>
'这是student.rb模型文件:
'This is the student.rb model file:
class Student < ActiveRecord::Base
#attr_accessor :teacherid, :firstname, :lastname, :dob, :isadult,
# :email, :cellphone, :username, :password, :addr_streetno,
# :addr_city, :addr_state, :addr_zip, :photo
#has_secure_password
belongs_to :parent
belongs_to :teacher
attr_accessor :email, :password, :password_confirmation
EMAIL_REGEX = /\A[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\z/i
validates :username, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true, :format => EMAIL_REGEX
validates_confirmation_of :password
scope :sorted, lambda { order("students.firstname ASC")}
end
这是学生表的结构:
create_table :students do |t|
t.references :parents
t.references :teachers, null: false
t.string :firstname, null: false
t.string :lastname, null: false
t.date :dob, null: false
t.boolean :isadult, null: false, default: false
t.string :email, null: false
t.string :cellphone
t.string :username, null: false
t.string :password_digest, null: false
t.string :addr_streetno
t.integer :addr_aptno
t.string :addr_city
t.string :addr_state
t.integer :addr_zip
t.binary :photo, :limit => 0.5.megabyte
t.timestamps
end
推荐答案
您的表定义会显示teachers
应为teacher
的位置,因为它是belongs_to
.它应该这样写:
Your table definition says teachers
where it should be teacher
, since it’s a belongs_to
. It should read this way:
t.references :parent
t.references :teacher, null: false
这篇关于在新控制器方法中使用form_for时未定义的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文