0

ApplicationHelperファイルに正常に機能するヘルパーがあります。

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

その後、using@issueはどのビューでも問題なく機能しますが、 using@issueという名前の列があることを考慮すると、 NoMethodErrorが返されます。message@issue.message

どんな助けでも素晴らしいでしょう!乾杯。

4

2 に答える 2

2

issueインスタンス変数は、インスタンスではなくオブジェクトの配列を返しています。Issueオブジェクトの属性を選択する場合は、オブジェクトのインスタンスを返す必要があります。

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

@issueをブロックに渡す必要がある場合は、Issueオブジェクトのすべてのメッセージ属性を出力しようとしている可能性があります。

 @issue.each do  |issue|
   issue.message
 end
于 2012-08-14T04:33:10.807 に答える
2

カイルCが言うように、ヘルパーから1つの問題を返す必要があるときにmessage一連の問題のメンバーにアクセスしようとしています。

Rails 3を使用しているとすると、ヘルパーの大幅に改善されたバージョンは次のように記述されます。

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

idomatic Rubyの作成に関する注意事項:

  • 明示的なステートメントを避け return、最後のステートメントをメソッドの戻り値とします。
  • に引数を渡す代わりにorder()、、where()などの連鎖可能なメソッドを使用しますlimit()find
于 2012-08-14T05:01:04.653 に答える