У меня есть модель пользователя со следующими полями: 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 контроллера (имя и адрес электронной почты), которые наследуются от пользовательского контроллера? Каждый контроллер со своими соответствующими видами.
Есть ли лучшее решение?