如何在rails视图上显示错误消息?
我是rails
新手,想要在form
字段上应用validation。
myviewsnew.html.erb
.....
Simulation.rb
class Simulation { :in => 1..25, :message => 'The row must be between 1 and 25' } end
simulation_controller.rb
class SimulationsController < ApplicationController def index @simulations = Simulation.all end def new end def create @simulation = Simulation.new(simulation_params) @simulation.save redirect_to @simulation end private def simulation_params params.require(:simulation).permit(:row) end
我想检查模型类row
字段的整数范围,如果它不在范围内,则返回错误消息。 我可以从上面的代码检查范围,但不能返回错误消息
提前致谢
关键是您正在使用模型表单,该表单显示ActiveRecord模型实例的属性。 控制器的创建操作将负责一些validation(并且您可以添加更多validation )。
当模型无法保存时,Controller会重新呈现new
View
如下更改您的控制器:
def new @simulation = Simulation.new end def create @simulation = Simulation.new(simulation_params) if @simulation.save redirect_to action: 'index' else render 'new' end end
当模型实例无法保存( @simulation.save
返回false
)时,将重新呈现new
视图。
new
视图显示无法保存的模型的错误消息
然后在new
视图中,如果存在错误,您可以像下面一样打印它们。
<%= form_for @simulation, as: :simulation, url: simulations_path do |f| %> <% if @simulation.errors.any? %> <% @simulation.errors.full_messages.each do |message| %> <%= message %> <% end %> <% end %> <%= f.label :Row %> <%= f.text_field :row, class: 'form-control' %> <% end %>
这里的重要部分是您正在检查模型实例是否有任何错误,然后将其打印出来:
<% if @simulation.errors.any? %> <%= @simulation.errors.full_messages %> <% end %>
做这个 –
<%= form_for :simulation, url: simulations_path do |f| %> <% if f.object.errors.any? %> <% if f.object.errors.each do |message| %> - <%= message %>
<% end %>
<% end %> .......... <% end %>
您只需将此代码添加到视图文件( myviewsnew.html.erb
):
<%= error_messages_for :simulation %>
在http://apidock.com/rails/ActionView/Helpers/ActiveRecordHelper/error_messages_for中查看error_messages_for
完整语法