控制器和视图关联以及self.method仍然让我感到困惑

时间:2013-01-11 02:08:40

标签: ruby-on-rails

好的,我的控制器的索引部分设置了

@patients = Patient.all

然后在patients_helper.rb

def race_abrev
 return self.caucasian
end

其中Caucasian是Patients表中的整数数据类型列

然后在视图index.html.erb

<% @patients.each do |p| %>
  <td><%= p.gender %></td>
  <td><%= p.ethnicity %></td>
  <td><%= p.race_abrev %></td>
<% end %>

我得到了

undefined method `race_abrev' for #<Patient:0xb4d95cd8>

我已经检查了表格,我期待耐心。高加索人返回整数1,我错过了什么......对我似乎有的基本误解有什么见解?

1 个答案:

答案 0 :(得分:2)

race_abrev是帮助者,而不是Patient上的方法:

<%= race_abrev(p) %>

帮助器本身会返回p.caucasian,虽然看起来你实际上想要值为caucasian的东西,比如比较或东西。

所有这些都说,我不确定为什么你没有在模型上定义它(或者它实际上是什么),因为到目前为止它似乎与视图没有任何关系,是帮助者的视图。

如果您要在数据库中存储要转换的内容,它可能属于也可能不属于视图助手;如果要把它变成人类可读的东西,我就更有可能把它放在模型中。