我是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
),我希望再次显示更新表单。
但它不起作用。即使render :edit
为空,更新也永远不会失败(永远不会输入title_fr
)。事实上,如果其中一个字段为空,则更新不会执行任何操作,只会更新非空字段。
我肯定错过了某个地方,但我无法弄清楚......也许是Globalize的错误?
感谢您的帮助!