2014-10-18 3 views
3

Я запускаю Rails 4.1, и у меня есть форма редактирования с некоторыми значениями в ней, я не против других полей в форме, которая автоматически заполняется из значений базы данных, Rails делает это красиво. Но я хочу отключить автопопуляцию одного поля. Это возможно?Отключить автопопуляцию полей выбора со значениями базы данных в rails 4 edit form

Я делаю стандартные Rails form_for, все работает Я просто не хочу, чтобы одно из полей было автопопуляцией. Я не хочу устанавливать значение как пустое или "", потому что оно будет перезаписывать базу данных.

Любые предложения?

edit.html.erb

<%= form_for @object do |f| %> 
    <% f.text_field :property %> #autopopulate from database 
    <% f.text_field :property2 %> # I do not want to autopopulate. 
    <% f.submit 'Submit %> 
<% end %> 

ответ

1

Очистить атрибут перед визуализацией формы.

Вот что это будет выглядеть в виде:

<% @object.property2.clear %> # set attribute to an empty string 
<%= form_for @object do |f| %> 
    <% f.text_field :property %> #autopopulate from database 
    <% f.text_field :property2 %> # I do not want to autopopulate. 
    <% f.submit 'Submit %> 
<% end %> 

Тем не менее, лучше всего делать в контроллере:

def edit 
    # ... 
    @object.property2.clear 
end 

Обратите внимание, что если вы отправляете эту форму с пустым полем, он сохранит пустую строку в базе данных, удалив все, что было раньше.

+0

Привет Существенный, как вы сказали, это сохраняет поле как пустое в базе данных, которое не является предполагаемым действием. Есть ли обратный вызов Rails, который я могу использовать только для сохранения, если поля отличаются от того, что находится в базе данных, и только если оно не пустое? Кажется, кому-нибудь, у кого есть форма Rails Edit, это понадобится, но в моем поиске это ничего не возникает ... любые указатели? Я могу написать свой собственный метод, но это похоже на то, что должно быть уже доступно. – ecoding5

+0

Преднамеренное искажение состояния записи довольно необычно и противоречит соглашениям Rails. Вы можете игнорировать пустой параметр при обновлении, но очистка атрибута невозможна без какого-либо дополнительного ввода (флажок «clear attribute») или специального действия контроллера. – Substantial

Смежные вопросы