在我的模型我說:Ruby on Rails的覆寫默認存取
def dag
'test'
end
但當我循環中的所有記錄,並使用
f.text_field :dag
我還沒有得到的"test"
值...我從數據庫中獲得價值。我如何覆蓋窗體的默認getter?我的作品,當我說
Model.dag # returns 'test'
在我的模型我說:Ruby on Rails的覆寫默認存取
def dag
'test'
end
但當我循環中的所有記錄,並使用
f.text_field :dag
我還沒有得到的"test"
值...我從數據庫中獲得價值。我如何覆蓋窗體的默認getter?我的作品,當我說
Model.dag # returns 'test'
雖然你的例子並不表明這一點,你定義DAG爲一類方法而不是一個實例方法? Model.dag暗示它是一種不是你想要的類方法。
如果您可以給我們多一點代碼,找到正確的答案會更有用。
說了這麼一句,我懷疑你已經宣佈你的方法是dag
保護或私有方法。 看一看,如果有一個private
(或protected
)keywork型號的代碼dag
方法聲明之上:如果是這樣,該方法是私有的(或保護),所以它不能被模板訪問...
類:
class DenLangeKamp < ActiveRecord::Base
belongs_to :liga, :class_name => "DenLangeLiga"
DAYS = { "Man" => 1, "Tir" => 2, "Ons" => 3, "Tor" => 4, "Fre" => 5, "Lør" => 6, "Søn" => 7 }
def dag
DAYS.invert[reader_attribute(:dag)]
end
def dag=(dag)
write_attribute(:dag, DAYS[dag])
end
end
,然後形式如下:
.........
<% liga_form.fields_for :kampe do |kamp_form| %>
<tr>
<td><%= kamp_form.text_field :dag %></td>
.........
我節省了一天作爲一個數據庫中的號碼,這樣我就可以在當天進行排序。 「dag」是英文中的「day」。
當我說「DenLangeKamp.first.dag」時,我得到正確的回報(如「Man」,「Tir」等)但是在表單中,我正在獲取該數字!所以它看起來並不像它實際上正確地「覆蓋」getter方法。
我有同樣的問題。重寫的函數似乎在索引和顯示上工作,但在編輯中,表單未使用重寫函數。它似乎正在繞過重寫的函數獲得不同的方式。
不,我的意思是「Model.first.dag」。這是一個實例方法。我想覆蓋f.text_field:dag,並在我的respond_to:xml中進行覆蓋 – Alexander 2010-12-09 13:30:08