我对 Rails 很陌生,我面临一个奇怪的问题,到目前为止,我的谷歌搜索并没有帮助我......
我已经按照《Rails 入门》指南实施了一个经典的 CRUD 资源,并且我阻止了“更新”部分: http: //guides.rubyonrails.org/getting_started.html#updating-articles
这是我的模型“Devwork”的一部分:
class Devwork < ActiveRecord::Base
validates :short_title, presence: true, uniqueness: true
validates :title_fr, presence: true, allow_blank: false
translates :title, :summary, :description
globalize_accessors
end
我正在使用Globalize gem 来保存本地化数据,并使用Globalize-accessor来保存帮助程序。
这是控制器的更新操作:
class DevworksController < ApplicationController
def update
@devwork = Devwork.find(params[:id])
if @devwork.update(devwork_params)
redirect_to @devwork
else
render :edit
end
end
private
def devwork_params
params.require(:devwork)
.permit!
end
end
和表格的一部分:
<%= form_for @devwork do |f| %>
<p>
<%= f.label :short_title %>
<%= f.text_field :short_title %>
</p>
<p>
<%= f.label :title_fr %>
<%= f.text_field :title_fr %>
<%= f.label :title_en %>
<%= f.text_field :title_en %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
short_title
并且title_fr
是强制性的,而存在另一个title_en
不是的字段。title_fr
如果更新失败(通常是因为 empty ),我希望再次显示更新表单。
但它不起作用。render :edit
即使title_fr
为空,更新也永远不会失败(永远不会进入)。实际上,如果其中一个字段为空,则更新不会执行任何操作,它只会更新非空字段。
我肯定在某个地方漏掉了一些东西,但我想不通……也许是对 Globalize 的误用?
谢谢你的帮助 !