【发布时间】:2014-09-24 14:26:01
【问题描述】:
型号
class Clip < ActiveRecord::Base
validates_length_of :description, maximum: 160
end
控制器
def update
@clip = @film.clips.find_by_permalink(params[:id])
respond_to do |format|
if @clip.update(clip_params)
format.html { redirect_to saas_admin_studio_film_path(@studio, @film), notice: 'Clip was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @clip.errors, status: :unprocessable_entity }
end
end
end
查看
<%= render 'saas_admin/shared/errors', resource: resource %>
<%= resource %> 生成 #<Clip:0x0000010c6c64e0> 以便加载资源。但是,<%= resource.errors.any? %> 返回false。如果我将控制器 @clip.update(clip_params) 更改为 @clip.update!(clip_params) 我得到:
Validation failed: Description is too long (maximum is 160 characters)
所以验证有效,只是.errors没有采取显示它。
_errors
<% if resource.errors.any? %>
<ul>
<% resource.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
任何想法为什么会发生这种情况?谢谢。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 ruby-2.1