我是Rails的新手,我面临着一个奇怪的问题,而我的Google搜索并没有帮助我...
在Rails Guide入门之后,我已经实施了经典的Crud Ressource,我正在阻止“更新”部分: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
i正在使用
globalizeGEM持续局部数据,而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
)。
但它行不通。即使是空的,更新也永远不会失败(永远不会输入)。实际上,如果一个字段为空,则该更新无能为力,仅更新非空字段。我肯定错过了某个地方的东西,但我无法弄清楚……也许是全球化的小姐?
感谢您的帮助!
您可以尝试将其添加到您的globalize_accessors创建
render :edit
和title_fr
title_fr
title_en