2013-05-23 7 views
2

Это моя форма:Рельсы образуют поля пустыми после отправки формы

<%= form_tag("/adverts", :method => "get") do %> 
Order by: 
<%= select_tag :order_by, options_for_select([['Ascending', 'ASC'], ['Descending', 'DESC']])%> 

<%= text_field_tag :text%> 

<%= submit_tag 'Change' %> 
<% end %> 

В мой контроллер Объявления, индексный метод, сейчас я ничего не делаю, и я могу видеть, что он получает правильные значения из формы,

=> но когда страница перезагружается после отправки, значения полей пусты, но я хочу, чтобы они сохраняли значения.

Так что, если я введу текст в текстовое поле, этот текст будет по-прежнему присутствовать после отправки формы.

+0

Вы посмотрели API для ['options_for_select'] (http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select) и [' text_field_tag'] (http : //api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag)? Вот где вы можете найти ответ на свой вопрос. – Mischa

ответ

3

Как это:

<%= select_tag :order_by, options_for_select([['Ascending', 'ASC'], ['Descending', 'DESC']], params[:order_by]) %> 

и:

<%= text_field_tag :text, params[:text] %> 

См. API на options_for_select и text_field_tag.

+0

Более подходящий ответ, чем мой. – Matt

2

Вам необходимо создать форму для объекта, если вы хотите, чтобы он автоматически возвращал значения объектов при перезагрузке.

<%= form_for @object do |form| %> 
    <%= form.text_field :name %> <!-- automatically gets re-populated with the value of @object on postback --> 
    <%= form.submit %> 
<% end %> 

Если вы действительно хотите использовать теги формы вместо строителя, то вам нужно установить значения вручную после постбэка

<%= text_field_tag :text, some_string_value %> 
+0

Дело в том, что это обычная форма без объекта. –

+0

@ Mischa Я только сказал, что ему нужен объект, если OP хочет, чтобы он автоматически заново заполнил, что верно. Использование тегов формы требует ручного повторного заполнения значений, как я также объясняю в ответе. Ваш ответ более прямой, поэтому я буду поддерживать этот вариант, но оставлю свой ответ для дополнительного контекста. – Matt

+0

Извините, я неправильно понял ваш ответ. Удалит мой комментарий. – Mischa

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