0

我的 ApplicationHelper 文件中有一个可以正常工作的助手:

def latest_issue
  @issue = Issue.find(:all, :order => "id DESC", :limit => 1)
  return @issue
end

之后, using@issue在任何视图中都可以正常工作,但考虑到@issue有一个名为messageusing的列会@issue.message返回无方法错误。

任何帮助都会很棒!干杯。

4

2 回答 2

2

正如Kyle C 所说,当您应该从助手返回一个问题时,您正试图访问一系列message问题的成员。

假设您使用的是 Rails 3,您的助手的一个大大改进的版本将这样编写:

def latest_issue
  Issue.order(:id).last
end

关于编写 idomatic Ruby 的一些注意事项:

  • 避免显式 return语句,让最后一个语句作为方法的返回值
  • 使用可链接的方法,如order(), where(), 和limit()而不是将参数传递给find
于 2012-08-14T05:01:04.653 回答
2

问题实例变量返回一个对象数组而不是实例。如果您想选择一个问题对象的属性,您需要返回该对象的一个​​实例。

 @issue = Issue.find(:last)
 @issue.message

您可能正在尝试输出问题对象的所有消息属性,如果是这种情况,您需要将 @issue 传递给块

 @issue.each do  |issue|
   issue.message
 end
于 2012-08-14T04:33:10.807 回答