Rails 3 text_field with:占位符提交为非零

时间:2012-02-07 18:57:41

标签: ruby-on-rails-3 html5

我有一个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,而是具有类似于''的值。更新记录时,返回的值为'',不满足零要求。

如何阻止表单提交仅包含占位符文本的可选输入字段?

解决此问题的最佳方法是将其从控制器级别的参数中删除吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

我可能会在model

中这样做
def optional_description=(optional_description)
  optional_description = nil if optional_description.blank?
  super(optional_description)
end

这比在控制器中执行它要好一些。