Передача переменной экземпляра из одной формы в действие другого контроллера в Rails - PullRequest
0 голосов
/ 21 сентября 2009

Простой вопрос - у меня есть форма, в которой я создаю экземпляр объекта. После создания этого объекта (иначе говоря, отправки формы) я хочу перенаправить на новую форму, связанную с действием другого контроллера, и перенести эту переменную экземпляра для заполнения некоторых полей этой формы.

Я знаю, что у меня обычно есть 2 варианта: сохранить эту переменную экземпляра в сеансе или передать ее через параметры. Я не могу использовать сессии (по разным причинам я не буду утомлять вас). Опция params, в которой я запутался.

Я должен знать это. :( Как бы вы поступили так? Любые примеры очень ценятся !!

Betsy

Ответы [ 3 ]

1 голос
/ 21 сентября 2009

У вас будет два метода на вашем контроллере. Один для каждой формы (отображается связанным шаблоном). Первая форма должна опубликовать для второго действия. Второе действие может затем передать параметры запроса в переменные экземпляра, которые будут доступны во втором шаблоне.

class FooController
  def bar
   # setup instance variables and render first form
  end

  def baz
    @bar_values = params[:bar]
    # setup other instance variables and render second form
  end
end

UPDATE0 Сделайте это на двух контроллерах, используя сеанс.

class FooController
  def new_baz
    # setup instance variables and render the first form
  end

  def create_baz
    # respond to posting of form data
    session[:current_baz_values] = params
    redirect_to :action => "baq", :controller => "bar"
  end
end

class BarController
  def baq
    @baz_values = session[:current_baz_values]
    # setup other instance variables and render the second form
  end
end
0 голосов
/ 25 сентября 2009

Если вы не хотите использовать сеансы, вы можете использовать переменную flash для хранения вашего параметра. Что-то вроде flash [: my_params] = params, а затем считывает его обратно в следующем запросе с params = flash [: my_params]. Хорошая вещь во флэш-памяти заключается в том, что она сохраняется только для следующего запроса и автоматически очищается после этого.

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

0 голосов
/ 21 сентября 2009

Не могли бы вы как-то просто найти недавно созданную запись в другом контроллере, а затем использовать ее для заполнения необходимой вам информации?

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

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