Ami*_*Pal 5 ruby controller views ruby-on-rails
我是新手,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>
.....
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我想检查row模型类中的整数字段范围,如果它不在范围内,则返回错误消息.我可以从上面的代码检查范围,但不能返回错误消息
提前致谢
关键是您正在使用模型表单,该表单显示ActiveRecord模型实例的属性.控制器的创建操作将负责一些验证(并且您可以添加更多验证).
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
Run Code Online (Sandbox Code Playgroud)
当模型实例无法保存(@simulation.save返回false)时,将new重新呈现视图.
new View显示无法保存的模型的错误消息然后在您的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 %>
Run Code Online (Sandbox Code Playgroud)
这里的重要部分是您正在检查模型实例是否有任何错误,然后将其打印出来:
<% if @simulation.errors.any? %>
<%= @simulation.errors.full_messages %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18724 次 |
| 最近记录: |