Rails 3 text_field с: заполнитель, отправляющий как не ноль - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть форма 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=

Когда принимаются параметры [: cont]это значение не указано как ноль, а скорее имеет значение, аналогичное значению ''.Когда запись обновляется, возвращается значение '', что не удовлетворяет требованию nil.

Как запретить форме отправлять необязательные поля ввода с только заполнителем текста в качестве значений?

Это лучший способ исправить это, просто удалив его из параметров на уровне контроллера?

Очень ценится

1 Ответ

1 голос
/ 08 февраля 2012

Я бы наверное сделал это в model

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

Это немного лучше, чем делать это в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...