Кнопка: создать один объект, а затем перенаправить на создание другого?

railsnoobquestion: Я пытаюсь разработать функцию, при которой пользователь может сохранить объект в rails, а затем снова перенаправить его в форму для создания другого объекта.

Я мог бы подумать о двух вариантах: -Создать полностью новый маршрут -Добавить данные в объект поста ресторана, проверить эти данные в контроллере?

Кто-нибудь построил подобную функцию?

спасибо


person Hendrik    schedule 14.03.2012    source источник


Ответы (2)


Вот стандартное действие создания для ресурса сообщений.

def create
  @post = Post.new params[:post]

  if @post.save
    redirect_to @post, notice: 'Post was successfully created.'
  else
    render :new
  end
end

Все, что вам нужно сделать, это изменить перенаправление с @post на new_post_path.

redirect_to new_post_path, notice: 'Post was successfully created.'

Это то, что вы ищете?

person James    schedule 14.03.2012
comment
Спасибо, это полезно. Я опубликую свое решение, похожее на ваше. - person Hendrik; 15.03.2012

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

%input#create_another{:name => "create_another", :type => "hidden", :value => 0 }
%a.btn.btn-info#submit_another

Затем используйте javascript для отправки формы:

jQuery(document).ready(function() {
  $("#submit_another").click(function() {
    $('#create_another').attr('value','1');
    console.log($('#create_another').attr('value'));
    $(".formtastic").submit();
    return true;
  });
});

Внутри соответствующего контроллера, в моем случае, контроллера категории:

if params[:create_another].nil?
  @create_another = false
else
  @create_another = (params[:create_another] == "1")
end
respond_to do |format|
  if @category.save
    if @create_another
      format.html { redirect_to new_restaurant_category_path(@restaurant), notice: I18n.t(:entry_successfully_created, :name => I18n.t(:category_singular)) }
person Hendrik    schedule 15.03.2012