Перенаправить обратно на форму с сохранением ранее введенных значений - PullRequest
4 голосов
/ 07 февраля 2012

В моем приложении rails 3 есть Перспективы и Адвокаты. Перспективы has_many адвокатов. В моей форме для создания новой перспективы у меня есть поле выбора, которое заполнено текущим списком адвокатов. Также в новой форме перспективы у меня есть link_to new_solicitor_path, чтобы добавить нового адвоката, если таковой необходим. После того, как использованный объект переходит в новую форму солиситора, заполняет ее и нажимает кнопку отправки, он возвращается в новую форму потенциального клиента. Это все работает.

Я хотел бы, чтобы пользователь перенаправлял обратно в новую форму потенциального клиента, и вся информация, которую он вводил при переходе по ссылке «новый адвокат», сохраняется. Прямо сейчас, когда пользователь заканчивает создание нового солиситора и перенаправляется обратно в форму перспективы, все поля формы снова остаются пустыми.

Обновление Я постараюсь быть более ясным.

Пользователь щелкает ссылку, чтобы создать новую перспективу

<%= link_to "New Prospect", new_prospect_path %>

это ссылка на новое действие, которое делает форму частичной

<%=render 'form'%>

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

<%= select_tag "prosolicitor", options_from_collection_for_select(@org.solicitors.all, "id", 'fullname', @prospect.solicitors.first.id), :include_blank => true %>
 <%= f.label :Primary_Solicitor %><%= link_to "(new)", new_solicitor_path%><br/>

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

def create
      @solicitor=@org.solicitors.new(params[:solicitor])
      session[:return_to] ||= request.referer
      if @solicitor.save


        redirect_to session[:return_to]


        flash[:notice]='Solicitor saved!'
      else

        render new_solicitors_path
         flash[:notice]='Could not save Solicitor.'
      end

    end

Это возвращает меня к новой форме перспективы, но все данные, которые пользователь ввел перед тем, как щелкнуть ссылку нового адвоката, потеряны. Благодаря комментариям Марка, я понимаю, что использование redirect_to вызывает проблему. Я просто не уверен, что решение.

1 Ответ

3 голосов
/ 07 февраля 2012

Вместо перенаправления просто визуализируйте действие :new.Элементы формы должны остаться.

# ...
else
  flash[:error] = 'Could not save Solicitor.'
  # should include .fieldWithErrors formatting in the view
  render :action => 'new'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...