2017-01-05 58 views
0

我对Rails不是很有信心,但最近开始添加自定义会话变量以存储一些数据,如id。我正在尝试将呼叫ID设置为最近创建的值,但不断收到错误。无法添加会话变量 - ActiveModel :: MissingAttributeError

代码:

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

这完全一样的事情的作品在同一个控制器等动作,但在这里我得到:

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

我只是呼吁,以便一个POST调用这个动作操纵一些数据并设置此会话变量以供稍后使用。必须有一些基本的东西我缺少关于会话变量的工作原理。有什么明显的可能导致这个错误?

+0

会话尝试做'的request.session [:呼叫ID = callid',看看别的与会话干扰。 – Iceman

+0

嘿冰人,通过使用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

在rails中,在模型名称上创建新记录只是创建方法。

callid = Call.createCall(sessionid,tp_cd) 

所以它应该是这样的:

callid= call.create(params) 

在PARAMS您需要定义这样的:列名:您的变量/值。那么Call模型中有哪些列?如果你有SESSION_ID列,这将是这样的:

callid= call.create(session_id: value_given) 
相关问题