Удалить или редактировать несколько объектов в одной форме рельсов - PullRequest
0 голосов
/ 17 марта 2012

Я использовал эпизод Railscast 198 для создания формы, которая позволяет мне редактировать несколько объектов по отдельности, используя флажки.Я хотел бы иметь возможность выбирать действия «Редактировать» или «Удалить» после того, как поставил флажки в пунктах, которые я хотел бы изменить.Я добавил это в мой photos_controller.rb для действия редактирования:

 def edit_individual
  @photos = Photo.find(params[:photo_ids])
 end

  def update_individual
   @user = current_user
   @photos = Photo.update(params[:photos].keys, params[:photos].values).reject { |p|   p.errors.empty? }
  if @photos.empty?
    flash[:notice] = "Products updated"
    redirect_to photos_url
  else
    render :action => "edit_individual"
  end
 end

И, на мой взгляд, я добавляю эту строку кода, когда я перебираю каждую фотографию для ее отображения:

<%= form_tag edit_individual_photos_path, :method => "get" do %>
   ... #loop through all photos and add a checkbox
   <%= check_box_tag "photo_ids[]", photo.id %>
<%= submit_tag "Edit", :class => "btn btn-large btn-inverse" %> 

Это прекрасно работает, но я не могу понять, как добавить еще один тег отправки в форму, чтобы удалить выбранные элементы, а не просто редактировать их.Кто-нибудь знает, как я мог передать массив photo_ids в качестве параметра и уничтожить их?

Ответы [ 2 ]

1 голос
/ 20 марта 2012

С помощью Ашитаки я придумал это для действия удаления в моем контроллере.Редактировать / обновить было действием по умолчанию, поэтому мне нужно было указать только, если нажата кнопка «Удалить».

In photos_controller.rb:

def edit_individual
  ...
  if params[:commit] == 'Delete'
    @photos = Photo.find(params[:photo_ids])
    @photos.each { |photo|
      photo.remove_image!
      Photo.destroy(photo.id)  }
    redirect_to photos_new_path
  end
end

В виде:

<%= form_tag edit_individual_photos_path do %>
  ...#loop through all of the photos and add checkbox 
  <%= check_box_tag "photo_ids[]", photo.id %>
   #two submit buttons for the different actions
  <%= submit_tag "Edit", :class => "btn btn-large btn-inverse" %> 
  <%= submit_tag "Delete", :class => "btn btn-large btn-danger" %> 
<% end %>
1 голос
/ 18 марта 2012

Повторяющийся вопрос Как создать несколько кнопок отправки для одной и той же формы в Rails? .

Единственное отличие состоит в том, что в этом вопросе они используют form_for и f.submit с вместо form_tag и submit_tag с, но это должно быть легко понять. Значения ваших кнопок будут «Редактировать» и «Удалить» вместо «А» и «В».

...