【问题标题】:Rails 3 text_field with :placeholder submitting as not nil带有:占位符的Rails 3 text_field提交为非零
【发布时间】:2012-02-07 18:57:41
【问题描述】:

我有一个使用以下基本语法的 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' %>

当表单提交时正确输入了“名称”(并在模型中验证)并且“可选描述”留下了默认占位符文本,POST 请求提交类似于以下内容:

POST /cont/update/1
...
name=Jane%20Smith&optional_description=

当使用 params[:cont] 时,这个值不会被列为 nil,而是有类似于 '' 的东西作为值。更新记录时,返回值为'',不满足nil要求。

如何防止表单提交仅以占位符文本作为值的可选输入字段?

解决这个问题的最佳方法是从控制器级别的参数中删除它吗?

非常感谢

【问题讨论】:

    标签: ruby-on-rails-3 html


    【解决方案1】:

    我可能会在model 中这样做

    def optional_description=(optional_description)
      optional_description = nil if optional_description.blank?
      super(optional_description)
    end
    

    这比在控制器中做的要好一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2012-12-14
      • 2011-06-15
      • 2011-06-03
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多