我正在尝试在未正确提交表单时在我的视图中显示错误。我在我的模型中有一个验证集,用于存在位置,在我的表单中,我使用errors方法尝试在我的视图中显示错误。以下是我的代码。验证工作正常,因为当location为nil时我收到rails错误,它只是没有将msg显示为html。
模型
class Destination < ActiveRecord::Base
validates :location, presence: true
end
表格new.html.erb
<%= form_for @destination do |f| %>
<% if @destination.errors.any? %>
<% @destination.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
<% end %>
<%= f.label :location %>
<%= f.text_field :location %><br>
<%= f.submit %>
<% end %>
控制器
def create
@destination = Destination.new(destination_params)
if @destination.save!
redirect_to destinations_path
else
render new_path
end
end
private
def destination_params
params.require(:destination).permit(:location, :description)
end
end
答案 0 :(得分:1)
@destination.save!
将抛出错误。要访问render new_path
行,您只需@destination.save
。
答案 1 :(得分:1)
@destination.save!
会引发错误。
@destination.save
将返回true或false。
答案 2 :(得分:0)
@destination.save!
会抛出错误。你必须做类似的事情;
if @destination.save # returns true if successfully saved else false
redirect_to destinations_path
else
flash[:errors] = @destination.error_messages # Display errors in view
render new_path
end
HTH。