разделить 1 большую форму на несколько подформ - PullRequest
1 голос
/ 29 февраля 2012

Как лучше всего разделить модель профиля пользователя и ее форму на несколько подформ, которые можно обновлять отдельно?

как * базовые сведения

  • подробности
  • мои фотографии
  • мои интересы

У вас может быть только 1 действие редактирования, так что бы вы предпочли для этого?

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

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

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

1 голос
/ 29 февраля 2012

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

resources :users do
  resource :basic_details
  resource :detailed_details
  resources: :photos
  resources: interests
end

Что дает вам такие маршруты, как: edit_user_basic_details(@user), поэтому у вас могут быть формы, которые выполняют действия по обновлению этих подресурсов, например:

<%= form_for :basic_details, url: user_basic_details_path(@user) do |form| %>
  <%= form.text_field :name %>
  <%= form.submit %>
<%= end %>

Таким образом, вы можете настроить контроллеры следующим образом:

class BasicDetailsController < ApplicationController
  def edit
   @user = User.find(params[:user_id])
  end

  def update
   @user = User.find(params[:user_id])
   @user.update_attribures(params[:basic_details])
  end
end

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

Надеюсь, это поможет вам начать.

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