Ruby on rails Rails:helper返回正确的SQL结果,但忽略列

Ruby on rails Rails:helper返回正确的SQL结果,但忽略列,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我的ApplicationHelper文件中有一个工作正常的助手: def latest_issue @issue = Issue.find(:all, :order => "id DESC", :limit => 1) return @issue end 在这之后,使用@issue在任何视图中都可以正常工作,但是考虑到@issue有一个名为message的列,使用@issue.message返回一个无方法错误 任何帮助都会很棒!干杯。问题实例变量返回的是对象数组,而不是实

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

def latest_issue
  @issue = Issue.find(:all, :order => "id DESC", :limit => 1)
  return @issue
end
在这之后,使用
@issue
在任何视图中都可以正常工作,但是考虑到
@issue
有一个名为
message
的列,使用
@issue.message
返回一个无方法错误


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

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

 @issue = Issue.find(:last)
 @issue.message
您可能正在尝试输出Issue对象的所有消息属性,如果需要将@Issue传递给块

 @issue.each do  |issue|
   issue.message
 end

issue实例变量返回的是对象数组,而不是实例。如果要选择问题对象的属性,则需要返回该对象的实例

 @issue = Issue.find(:last)
 @issue.message
您可能正在尝试输出Issue对象的所有消息属性,如果需要将@Issue传递给块

 @issue.each do  |issue|
   issue.message
 end
当您试图访问一系列问题的成员
消息
时,您应该从助手返回一个问题

假设您使用的是Rails 3,那么您的助手将有一个大大改进的版本:

def latest_issue
  Issue.order(:id).last
end
关于编写idomatic Ruby的几点注意事项:

  • 避免显式的
    return
    语句,并将最后一条语句作为方法的返回值
  • 使用可链接的方法,如
    order()
    where()
    limit()
    ,而不是将参数传递给
    find
您试图访问一系列问题的成员
消息
,此时您应该从您的助手返回一个问题

假设您使用的是Rails 3,那么您的助手将有一个大大改进的版本:

def latest_issue
  Issue.order(:id).last
end
关于编写idomatic Ruby的几点注意事项:

  • 避免显式的
    return
    语句,并将最后一条语句作为方法的返回值
  • 使用可链接的方法,如
    order()
    where()
    limit()
    ,而不是将参数传递给
    find

太好了,干杯!但这将始终选择ID为1的问题,对吗?没有得到最新的版本?你可以使用issue.find(:first,:order=>“id DESC”)还有,如果你像这样编写它,它会更像Rails 3。order(“id DESC”)。首先,使用find with conditions是递减的,非常好,干杯!但这将始终选择ID为1的问题,对吗?没有得到最新的版本?您可以使用issue.find(:first,:order=>“id DESC”)另外,如果您像这样编写它,它的更多Rails 3。order(“id DESC”)。首先,使用find with conditions是递减的,谢谢您的注释!我对这个很陌生,我相信你能看出来。谢谢你的留言!我对这件事不太熟悉,我相信你会知道的。