无法添加会话变量 - ActiveModel::MissingAttributeError

Can't add session variable - ActiveModel::MissingAttributeError

我对 Rails 不是很有信心,但最近开始添加自定义会话变量以存储一些数据,例如 ID。我正在尝试将呼叫 ID 设置为最近创建的值,但一直出现错误。

代码:

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

这完全相同的事情在同一个控制器的其他动作中起作用,但在这里我得到:

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

我只是通过 POST 调用来调用此操作,以便操作一些数据并设置此会话变量以供稍后使用。关于会话变量的工作原理,我一定缺少一些基本的东西。有什么明显的原因会导致此错误吗?

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

callid = Call.createCall(sessionid,tp_cd)

所以应该是这样的:

callid= call.create(params)

在参数中,您需要这样定义它:列名:您的 variable/value。那么您的 Call 模型中有哪些列?如果你有 session_id 列,它将是这样的:

callid= call.create(session_id: value_given )

它给出一个错误,因为 Rails 寻找一个名为 Session 的模型,而不是作为请求周期一部分的会话对象。

你可以这样获取session

request.session[:callid] = callid