Как обрабатывать много форм на одной странице? - PullRequest
0 голосов
/ 28 октября 2009

Если у меня есть одна страница с множеством форм существующих записей:

index.html.haml

- for selection in @selections
  - form_for selection, :method => :put do |form|
    = form.collection_select :user_id, @current_account.users, :id, :full_name

и затем для отправки и обновления действия:

selections_controller.rb

def update
  selection = Selection.find(params[:id])
  if selection.update_attributes(params[:selection])
    flash[:notice] = "Save!"
    redirect_to selections_path
  else
    flash[:errors] = "Errors"
    render :index
  end
end

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

selection.errors.on(:user_id)

для одной из форм?

1 Ответ

1 голос
/ 28 октября 2009

Обычно вы хотите использовать error_msg_for помощник.

= error_messages_for object

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

Сначала ваше действие по обновлению должно заново заполнить @selections и сделать выбор, который не удалось обновить, доступным для представления в качестве переменной экземпляра.

def update
  @selection = Selection.find(params[:id])
  if @selection.update_attributes(params[:selection])
    flash[:notice] = "Save!"
    redirect_to selections_path
  else
    @selections = Selection.find ....
    flash[:errors] = "Errors"
    render :index
  end
end

Затем отфильтруйте эту информацию в ваших формах.

index.html.erb

- for selection in @selections
  - form_for selection, :method => :put do |form|
    = error_messages_for form.object if form.object.id = @selection.id
    = form.collection_select :user_id, @current_account.users, :id, :full_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...