Как отобразить два типа страниц учетной записи пользователя - PullRequest
0 голосов
/ 05 января 2011

У меня есть модель пользователя со следующими полями: first_name, last_name, email.

Клиент хочет две страницы. Первая страница для редактирования имени и фамилии и вторая страница для редактирования адреса электронной почты.

Один из вариантов, о котором я подумал, - это использование params для определения того, какую часть следует отображать в user / edit :

  <% if !params[:section] %>
    <%= render :partial => 'form_for_name' %>
  <% elsif params[:section] == 'email' %>
    <%= render :partial => 'form_for_email' %>
  <% end %>

URL для первой страницы будет выглядеть так: http://localhost:3000/users/1/edit

и вторая страница: http://localhost:3000/users/1/edit?section=email

Одна вещь, которую стоит отметить. Пользовательская модель содержит следующий код в def update :

    respond_to do |format|
      if @user.update_attributes(params[:user])
        format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
      end
    end

Это означает, что на странице электронной почты, если пользователь вводит неверный адрес электронной почты, ошибка отображается на первой странице вместо страницы электронной почты.

Я смотрю, как лучше всего реализовать этот сценарий. Или я должен иметь 2 контроллера (имя и адрес электронной почты), которые наследуются от пользовательского контроллера? Каждый контроллер со своими соответствующими видами.

Есть ли лучшее решение?

1 Ответ

0 голосов
/ 05 января 2011

Почему вы не отправляете параметр "section" также в вызов обновления?Таким образом, при возникновении ошибки и переходе на страницу редактирования будет доступен параметр section и будет отображена правильная форма.

Способ отправки «section» во время обновления также должен быть довольно простым.,Отправьте бит, где у вас есть форма, и я покажу вам, как передать текущий «раздел» действию обновления.Обычно вы просто прописываете путь "user_path (@user,: section => params [: section])" в действии формы.

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