我有一个Rails 3表单,它使用以下基本语法:
<%= form_for(:cont, :url => {:action => 'update', :id => @cont.id}) do |f| %>
<%= render(:partial => 'form', :locals => {:f => f}) %>
<%= submit_tag("Update", :class => 'submit') %>
<% end %>
部分看起来类似于:
<%= f.label(:name) %><%= f.text_field(:name, :placeholder => 'John Doe', :title => 'First and Last Name' %>
<%= f.label(:optional_description) %><%= f.text_field(:optional_description, :placeholder => 'not required', :title => 'Seriously, its optional' %>
提交表单时,“name”正确输入(并在模型中验证),“optional_description”保留默认占位符文本,POST请求提交类似以下内容:
POST /cont/update/1
...
name=Jane%20Smith&optional_description=
当采用params [:cont]时,该值不会列为nil,而是具有类似于''的值。更新记录时,返回的值为'',不满足零要求。
如何阻止表单提交仅包含占位符文本的可选输入字段?
解决此问题的最佳方法是将其从控制器级别的参数中删除吗?
非常感谢
答案 0 :(得分:1)
我可能会在model
def optional_description=(optional_description)
optional_description = nil if optional_description.blank?
super(optional_description)
end
这比在控制器中执行它要好一些。