我是铁杆新手,所以希望这将是一个简单的。这就是我所拥有的:
模型/ school.rb
class School < ActiveRecord::Base
has_many :courses
end
模型/ course.rb
class Course < ActiveRecord::Base
belongs_to :school
validates_presence_of :grade, :subject
end
配置/ routes.rb中
map.resources :schools, :has_many => :courses
视图/课程/ new.html.erb
<% form_for [@school, Course.new] do |f| %>
<%= f.error_messages %>
...
<% end %>
courses_controller.rb
def create
@school = School.find(params[:school_id])
@course = @school.courses.new(params[:course])
if @course.save
flash[:notice] = 'Course was successfully created.'
redirect_to(@school)
else
respond_to do |format|
# bug: form clears and no validation error messages are displayed
format.html { render :action => "new" }
end
end
end
验证失败时,将呈现new
操作,但表单值已清除,我看不到任何验证失败消息。我错过了什么?
答案 0 :(得分:2)
在您的courses_controller.rb中创建了
def new
@course = @school.courses.new()
端
在您的表单中,您必须提及
&lt;%form_for [@ school,Course.new] do | f | %GT;
&lt;%= f.error_messages%&gt;
...
&lt;%end%&gt;
这就是为什么你的错误信息没有出现在你的表格中
答案 1 :(得分:0)
您需要指定错误消息在视图中的显示位置。
的视图/课程/ newhtml.erb 强>
<%= error_messages_for 'course' -%>
<% form_for [@school, Course.new] do |f| %>
...
<% end %>