Ruby on rails 在带有Globalize的Rails中,update似乎忽略了空字符串字段
我对Rails非常陌生,我面临着一个奇怪的问题,我的谷歌搜索到目前为止对我没有帮助 在《Rails入门指南》之后,我实现了一个经典的CRUD ressource,我正在阻止“更新”部分: 这是我的“开发工作”模型的一部分:Ruby on rails 在带有Globalize的Rails中,update似乎忽略了空字符串字段,ruby-on-rails,ruby,crud,globalize,Ruby On Rails,Ruby,Crud,Globalize,我对Rails非常陌生,我面临着一个奇怪的问题,我的谷歌搜索到目前为止对我没有帮助 在《Rails入门指南》之后,我实现了一个经典的CRUD ressource,我正在阻止“更新”部分: 这是我的“开发工作”模型的一部分: classdevwork
classdevwork
我正在使用gem来持久化本地化数据,并为助手们提供支持
以下是控制器的更新操作:
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
class DevworksController
以及表格的一部分:
<%= 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\u title
和title\u fr
是强制性的,而另一个字段title\u en
则不是强制性的。如果更新失败(通常是因为空的title\u fr
),我希望再次显示更新表单
但它不起作用。即使title\u fr
为空,更新也不会失败(从不输入render:edit
)。事实上,如果其中一个字段为空,则更新不会执行任何操作,它只更新非空字段
我肯定在什么地方漏掉了什么,但我想不出来。。。也许是全球化的误用
谢谢你的帮助
<%= 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 %>