【发布时间】:2014-11-16 00:51:24
【问题描述】:
目前,我在模型上有文本字段和一些验证。但是,当我显示错误消息时,用户插入的所有数据都将消失。我想显示错误消息+要保留的数据。代码如下:
<% if @student.errors.any? %>
<div id="validation_error" class="alert alert-danger" role="alert">
<ul>
<% @student.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form_for(:user_student, :url => {:controller => 'profile', :action => 'information'}) do |f| %>
<%= f.text_field :first_name, :value => @student.first_name, class: "form-control" , :placeholder => "First Name" %>
<%= f.text_field :last_name, :value => @student.last_name, class: "form-control" , :placeholder => "Last Name" %>
<% end %>
class Student < ActiveRecord::Base
validates :first_name, :presence => true
validates :last_name, :presence => true
end
更新 控制器:
def information
@student = Student.create(check_new_student_params)
if @student.save
#redirect to other page
end
end
def check_new_student_params
params.require(:user_student).permit(:first_name, :last_name)
end
我的预期行为:当用户给出名字而不是姓氏时,它会显示错误消息,并且名字会保留在文本字段中。谢谢
【问题讨论】:
-
你能在你运行验证的地方显示你的控制器代码吗?
-
controller上没什么,验证主要来自model
-
您能否添加您的控制器,以便我们可以看到正在调用的信息操作。这将是问题所在。
-
我唯一的想法是您的控制器可能没有正确填充@student 对象。否则,当您返回“新”页面时,信息应该会保留。
标签: ruby-on-rails ruby rails-activerecord