澄清访问方法

时间:2014-02-26 08:18:09

标签: ruby ruby-on-rails-3 methods

我无法访问我在类中编写的方法,问题是我试图在该类的实例中访问它,但是会感谢有人解释为什么这不起作用的更多细节以及要寻找解决方案的事情。

我创建了一个简单的帮助方法,在我的视图中用于连接两个属性

class TeamMember < ActiveRecord::Base

  def fullname
    "#{self.forename} #{self.surname}"
  end
end

在我的视图中(显示操作)我希望能够使用此方法

def show
  @team_member = TeamMember.find(params[:id])
end

所以这样做会给我一个未定义的方法

<%= link_to fullname(@team_member) %>
OR
<% @team_member.each do |t| %>
  <%= link_to fullname, t %>
<% end %>

虽然这有效

<% @team_member.each do |t| %>
  <%= link_to "#{t.forename} #{t.surname}", t %>
<% end %>

有人可以帮我澄清这一点,以便我可以从中学习

1 个答案:

答案 0 :(得分:2)

您在fullname类中定义了TeamMember方法,但是您尝试在视图中使用隐式接收器调用此方法,即ActionView::Base实例。相反,您应该使用显式接收器,它必须是TeamMember实例:

<%= link_to @team_member.fullname, @team_member %>

<%= link_to t.fullname, t %>