2017-01-05 69 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) 
相關問題