Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails覆盖默认访问器_Ruby On Rails_Ruby_Model - Fatal编程技术网

Ruby on rails RubyonRails覆盖默认访问器

Ruby on rails RubyonRails覆盖默认访问器,ruby-on-rails,ruby,model,Ruby On Rails,Ruby,Model,在我的模型中,我说: def dag 'test' end 但是当我循环所有的记录和使用 f.text_field :dag 我仍然没有得到“test”的值。。。我从数据库中获取值。如何覆盖表单的默认getter?我说的时候就工作 Model.dag # returns 'test' 虽然您的示例没有指出这一点,但您是否将dag定义为类方法而不是实例方法?Model.dag意味着它是一个类方法,而不是您想要的。如果您能给我们多一点代码,为您找到正确的答案会更有用 这么说吧,我怀疑您已经

在我的模型中,我说:

def dag
  'test'
end
但是当我循环所有的记录和使用

f.text_field :dag
我仍然没有得到
“test”
的值。。。我从数据库中获取值。如何覆盖表单的默认getter?我说的时候就工作

Model.dag # returns 'test'

虽然您的示例没有指出这一点,但您是否将dag定义为类方法而不是实例方法?Model.dag意味着它是一个类方法,而不是您想要的。

如果您能给我们多一点代码,为您找到正确的答案会更有用

这么说吧,我怀疑您已经将
dag
方法声明为受保护或私有方法。 查看模型代码上的
dag
方法声明上方是否有
private
(或
protected
)键:如果是,则该方法为private(或protected),因此模板无法访问它…

类:

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
class-DenLangeKamp“DenLangeLiga”
天={“人”=>1天,“Tir”=>2天,“Ons”=>3天,“Tor”=>4天,“Fre”=>5天,“Lør”=>6天,“Søn”=>7天}
def dag
天数.反转[读卡器属性(:dag)]
结束
def dag=(dag)
写入_属性(:dag,天[dag])
结束
结束
然后表单看起来像这样:

.........
<% 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_字段:dag,并在响应时覆盖:xml