Как использовать переменную в одном действии для другого действия - PullRequest
0 голосов
/ 22 апреля 2020

В контроллере ruby у меня есть два метода в одном контроллере.

class NotificationsController < ApplicationController

def first
  variable_one = xxxx
end

def second
// do something
end

end

Сначала я хочу использовать переменную one в методе, а во втором методе. Я пытался присвоить переменную one сеансу ha sh. session[:variable_one] = variable_one и получите к нему доступ во втором методе. Но оказывается, что сессия [: variable_one] в методе два равна нулю. Эти два метода не имеют соответствующих представлений, поэтому я не могу добавить link_to и передать параметры. Метод один также нельзя установить как before_action.

Не могли бы вы дать несколько советов по этой проблеме? Большое спасибо.

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема, что session сохраняется через cook ie, и поэтому она указывается c для одного устройства . Таким образом, у вас будет один session между приложением rails и вашим интерфейсом, а другой session между приложением rails и Twilio (вероятно, сессия Twilio будет сбрасываться между каждым запросом). По сути, это совершенно разные контексты.

Возможно, вы могли бы выяснить, как передавать информацию через Twilio - см. https://www.twilio.com/docs/voice/how-share-information-between-your-applications - но в качестве обходного пути общего назначения вы могли бы просто сохраните столбец в базе данных.

Сначала выполните миграцию, чтобы добавить столбец:

add_column :users, :my_variable, :string

Установите это значение в первой конечной точке:

def first
  current_user.update my_variable: "xxxx"
end

Затем прочитайте это со второго:

def second
  # first you would need to load the user, then you can read the value:
  my_variable = current_user.my_variable

  # you could set the db value to nil here if you wanted
  current_user.update my_varible: nil
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...