Ruby on Rails - множественное редактирование - PullRequest
0 голосов
/ 21 июля 2009

Railscasts сделал отличный урок о том, как сделать множественное редактирование из выбора. Но я хочу основываться на этом. Что если я хочу сделать больше действий (редактировать и уничтожать)? Это похоже на способность gmails выполнять различные действия с почтой.

Я создал свою форму, и у меня есть выпадающее меню действия. Форма переходит к действию в моем контроллере, которое должно перенаправить его на правильное действие (edit vs destroy). Я пытаюсь сделать это с redirect_to и передать мои параметры, но он не работает правильно.

def action
  if params[:perform_action] == 'edit'
    redirect_to :action => 'edit_multiple', :structure_ids => params[:structure_ids]
  elsif params[:perform_action] == 'destroy'
    redirect_to destroy_multiple_structures_path, :structure_ids => params[:structure_ids]
  end
end

Но это не работает должным образом. Мой edit_multiple фактически перенаправлен на действие show. Несмотря на то, что он настроен на моих маршрутах и ​​все такое.

Как правильно передать параметры? Или это вопрос способа, которым он был передан (и если да, то как мне это изменить?) Или как правильно сделать это (если это не так)?

Я устал передавать параметры, но это не сработало.

Я использую коллекцию вways.rb, но не могу понять, как изменить redirect_to для выдачи POST. Есть идеи?

Ответы [ 3 ]

1 голос
/ 22 июля 2009

Хорошо, поэтому я не могу понять, как заставить метод изменяться в redirect_to, и я не могу понять, как правильно передать параметры. ПОЭТОМУ я «обманул» и использовал jQuery для изменения действия самой формы:

$("#action").change(function(e){
    var changeTo = $(e.target);
    var value = changeTo.attr("value");
    if(value == 'edit'){
        $("form").attr("action","/myController/edit_multiple");
        $("form").attr("method","POST");
    }
    if(value == 'destroy'){
        $("form").attr("action","/myController/destroy_multiple");
        $("form").attr("method","DELETE");

    }
});

Не оптимизировано, но работает. И действие - это идентификатор тега select. Надеюсь, что это поможет кому-то еще.

0 голосов
/ 29 октября 2011

Gmail-подобные функции для удаления, архивирования и т. Д. Не нуждаются в форме, поэтому просто создайте кнопку или ссылку с нужной функциональностью. Вам нужна только форма для изменения контента.

0 голосов
/ 22 июля 2009

FYI- update_all или delete_all - ваш друг, здесь.

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