我是rails
的新手,想要在form
字段上应用验证。
myviewsnew.html.erb
<%= form_for :simulation, url: simulations_path do |f| %>
<div class="form-group">
<%= f.label :Row %>
<div class="row">
<div class="col-sm-2">
<%= f.text_field :row, class: 'form-control' %>
</div>
</div>
</div>
.....
Simulation.rb
class Simulation < ActiveRecord::Base
belongs_to :user
validates :row, :inclusion => { :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
字段的整数范围,如果它不在范围内,则返回错误消息。我可以从上面的代码检查范围但不能返回错误消息
提前致谢
答案 0 :(得分:8)
关键是您正在使用模型表单,该表单显示ActiveRecord模型实例的属性。 create action of the controller会处理一些验证(您可以add more validation)。
new
查看模型何时无法保存更改您的控制器如下:
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| %>
<li><%= message %></li>
<% end %>
<% end %>
<div class="form-group">
<%= f.label :Row %>
<div class="row">
<div class="col-sm-2">
<%= f.text_field :row, class: 'form-control' %>
</div>
</div>
</div>
<% end %>
这里的重要部分是你要检查模型实例是否有任何错误,然后将它们打印出来:
<% if @simulation.errors.any? %>
<%= @simulation.errors.full_messages %>
<% end %>
答案 1 :(得分:2)
这样做 -
<%= form_for :simulation, url: simulations_path do |f| %>
<% if f.object.errors.any? %>
<ul>
<% if f.object.errors.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
..........
<% end %>
答案 2 :(得分:-2)
您只需将此代码添加到视图文件(myviewsnew.html.erb
):
<%= error_messages_for :simulation %>
检查http://apidock.com/rails/ActionView/Helpers/ActiveRecordHelper/error_messages_for
中error_messages_for
的完整语法