2017-01-05 7 views
0

Я не очень уверен в Rails, но недавно начал добавлять пользовательские переменные сеанса для хранения некоторых данных, таких как идентификаторы. Я пытаюсь установить идентификатор вызова для недавно созданного значения, но продолжаю получать ошибку.Невозможно добавить переменную сеанса - ActiveModel :: MissingAttributeError

Код:

callid = Call.createCall(sessionid,tp_cd) 
session[:callid] = callid 

Это точно такая же вещь работает и в других действиях в том же контроллере, но здесь я получаю:

ActiveModel::MissingAttributeError (can't write unknown attribute `callid`) 

Я просто называя это действие с вызовом POST в порядке для управления некоторыми данными и установки этой переменной сеанса, которая будет использоваться позже. Должно быть что-то фундаментальное, что мне не хватает о том, как работают переменные сеанса. Есть ли что-то очевидное, что может вызвать эту ошибку?

+0

Попробуйте делать 'request.session [: CallID] = callid', чтобы увидеть, если что-то мешает вашей сессии. – Iceman

+0

Hey Iceman, используя request.session [: callid] Мне удалось заставить его работать, не зная, как это отличается от обычного, но теперь все работает. – suppp111

+0

Это по-другому, потому что если вы используете только 'session', Rails ищет модель под названием' Session', а не 'Session', которая является частью цикла запросов. Надеюсь, я не слишком тебя смущаю. – Iceman

ответ

0

Это дает ошибку, потому что Rails ищет модель называется Session, а не объект сеанса, который является частью цикла запроса.

Вы можете получить сеанс, как этот

request.session[:callid] = callid 
1

У вас есть session.rb в вашей модели?

+0

Я действительно, но это было связано с моей сессионной таблицей в db - это не означало никакого отношения к «сеансу», но что-то еще с моим приложением. Может ли это смутить его? ... но тогда любая другая переменная сеанса работает нормально:/ – suppp111

+0

Это просто изменяет имя вашей таблицы сеансов, чтобы увидеть –

0

В рельсах создание новой записи на имени модели - это просто метод создания.

callid = Call.createCall(sessionid,tp_cd) 

так должно быть так:

callid= call.create(params) 

в Params вам нужно определить это так: имя столбца: ваше переменное/значение. Итак, какие столбцы в вашей модели Call? если вы session_id столбец, это будет выглядеть следующим образом:

callid= call.create(session_id: value_given) 
Смежные вопросы