我无法访问我在类中编写的方法,问题是我试图在该类的实例中访问它,但是会感谢有人解释为什么这不起作用的更多细节以及要寻找解决方案的事情。
我创建了一个简单的帮助方法,在我的视图中用于连接两个属性
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 %>
有人可以帮我澄清这一点,以便我可以从中学习
答案 0 :(得分:2)
您在fullname
类中定义了TeamMember
方法,但是您尝试在视图中使用隐式接收器调用此方法,即ActionView::Base
实例。相反,您应该使用显式接收器,它必须是TeamMember
实例:
<%= link_to @team_member.fullname, @team_member %>
和
<%= link_to t.fullname, t %>