我的ApplicationHelper文件中有一个帮助程序可以正常工作:
def latest_issue
@issue = Issue.find(:all, :order => "id DESC", :limit => 1)
return @issue
end
之后,在任何视图中使用@issue
都可以正常工作,但考虑到@issue
使用message
有一个名为@issue.message
的列会返回No Method Error。
任何帮助都会很棒!欢呼声。
答案 0 :(得分:2)
问题实例变量返回一个对象数组而不是实例。如果要选择Issue对象的属性,则需要返回该对象的实例。
@issue = Issue.find(:last)
@issue.message
您可能正在尝试输出Issue对象的所有消息属性,如果是这种情况,则需要将@issue传递给块
@issue.each do |issue|
issue.message
end
答案 1 :(得分:2)
作为Kyle C says,当您应该从帮助者返回单个问题时,您正尝试访问问题数组的成员message
。
假设你正在使用Rails 3,你的帮助程序的大大改进版本将以这种方式编写:
def latest_issue
Issue.order(:id).last
end
关于编写idomatic Ruby的一些注释:
return
语句,并将最后一个语句作为方法的返回值order()
,where()
和limit()
之类的可链接方法,而不是将参数传递给find