Я добился большого прогресса в своем первом приложении Rails (использующем Rails 3). Взаимодействие с MVC все идет нормально, но у меня возникают трудности с формой, которая не имеет прямого отношения к модели.
Я использую form_tag, и в случае успеха все ведет себя хорошо. Однако обработка ошибок несколько недружественна. Фактическое сообщение об ошибке сохраняется во флэш-памяти и отображается в виде layouts / application.html, но мне бы очень хотелось, чтобы форма помнила содержимое, которое пользователь только что заполнил. сбросить их значения по умолчанию.
Мне нравится, что формы для действий RESTful над объектами автоматически запоминают их отправленные значения и выделяются красным цветом при наличии ошибок. У меня все хорошо без красной подсветки, но мне бы очень хотелось, чтобы я мог заставить поля формы сохранять представленные значения.
Может кто-нибудь посоветовать, как это сделать?
Выдержки из соответствующих файлов:
Вид / cardsets / import.html.erb:
<%= form_tag :action => :import_data, :id => @cardset do %>
...
<%= text_field_tag "separator", "", :maxlength => 1 %>
...
<%= text_field_tag "formatting_line" %>
...etc (more fields)
Контроллеры / cardsets_controller.rb:
# POST /cardsets/1/import_data
def import_data
success, message = @cardset.import_data(params, current_user)
if success
redirect_to(@cardset, :notice => message)
else
flash.now[:error] = message
render :import
end
end