我在ApplicationController中創建文件的方法,應設置我的一切行動實例變量:在ApplicationController中控制器設置實例變量不工作
def self.set_body_id(id)
print "This is test"
self.instance_variable_set(:@body_id, id)
end
,當我在另一個控制器調用此方法,像這樣:
class HostingController < ApplicationController
set_body_id "Test"
def index
end
end
..沒有任何反應。該視圖中不存在變量@body_id
。所以我運行一個rails控制檯來檢查這個函數是否被執行,並且如我所料,當我調用HostingController.new
時,我得到了一個This is test
字符串,但仍未定義@body_id
。
另外,我從self.variable_instance_set
刪除self
,甚至用@body_id = "Test"
補充此行,但這仍然不起作用。我究竟做錯了什麼?
編輯:
我看到我犯了一個錯誤。我嘗試在創建類實例之前設置一個實例變量。似乎self.set_body_id
應該涉及initialize
類,但仍然不知道如何去做。
你在混合類和實例變量 – apneadiving
@apneadiving:所以,這是一個得到這個工作的任何方式?我喜歡有一個可從視圖訪問的控制器範圍的變量。 – Galmi