在带有Globalize的Rails中,更新似乎忽略空字符串字段

时间:2015-02-19 20:15:22

标签: ruby-on-rails ruby crud globalize

我是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_titletitle_fr是强制性的,而另一个字段title_en则不是。如果更新失败(通常是因为空title_fr),我希望再次显示更新表单。

但它不起作用。即使render :edit为空,更新也永远不会失败(永远不会输入title_fr)。事实上,如果其中一个字段为空,则更新不会执行任何操作,只会更新非空字段。

我肯定错过了某个地方,但我无法弄清楚......也许是Globalize的错误?

感谢您的帮助!

0 个答案:

没有答案