0

いくつかの統計を含み、毎日更新される Day オブジェクトがあります。ここに私が得ている2つのエラーがあります:

未定義のメソッド「top_light_snown」 #

未定義のメソッド「top_agents_snown」 #

ビューの内容に応じて:

<h3 class='thin underline'>Daily Breakdown:</h3>
<%# debug @today %>
<%# @today.methods %>
Top User Agents Today: <%= @today.top_agents_snown %>
<br>
Top Keyword Triggers <%= @today.top_keyword_triggers %>
<br>
Top URLs Visited <%= @today.top_urls_visited %>
<br>
Top Injections Shown <%= @today.top_inj_shown %>
<br>
Top Popups Shown <%= @today.top_pop_shown %>
<br>
Top Custom Injections Shown <%= @today.top_cust_shown %>
<br>
Top Lightboxes Shown <%# @today.top_light_snown %>
<br>
Top Global Injections Shown <%= @today.top_glob_shown %>

.top_light_shown と .top_agents_shown のみがエラーを引き起こすことに注意してください。他のすべての方法は完全に正常に機能します。また、コメントアウトされた 2 つの debug コマンドにも注意してください。debug @today の結果は、実際に属性「top_light_shown」を持っていることを示しています。これは、@today.methods のメソッドのリストにも、使用されている他のすべてのメソッドとともに存在します。

コントローラーの内容は次のとおりです。ご覧のとおり、新しい @today Day オブジェクトをセットアップし、ジャンク データを事前に入力して、ビューからアクセスできるかどうかを確認しています。この場合、if ステートメントは常に失敗します (ただし、そうでない場合でも、同じ未定義のメソッド エラーが発生します)。

if Day.find_by_id(Time.now.day)
      stats_today = Day.find_by_id(Time.now.day)
      @ads_today = stats_today.top_inj_shown.size + stats_today.top_pop_shown.size + stats_today.top_cust_shown.size + stats_today.top_light_shown.size + stats_today.top_glob_shown.size
      @total_pageviews = Day.find_by_id(Time.now.day).pageviews
      @today = Day.find_by_id(Time.now.day)
    else
      @today = Day.new(:top_agents_shown => ['Firefox', 'Chrome'], :top_light_shown => ['l-TEST', 'l-TEST2'])
      puts @today.top_light_shown
      puts @today.top_agents_shown
      @ads_today = 'ERROR'
      @total_pageviews = 'ERROR'
    end

コントローラーで完全に正常に動作する puts を使用してページを要求した後のサーバー ログは次のとおりです。

2012-08-01 19:13:03 -0600 で 127.0.0.1 の GET "/assets/favicons/favicon.ico" を開始 アセット /favicons/favicon.ico を提供 - 304 変更なし (1ms)

l-TEST l-TEST2 Firefox Chrome

127.0.0.1 の GET "/dashboard" を 2012-08-01 19:16:38 -0600 で開始 DashboardController#index で HTML として処理

最後に、Day.rb の内容は次のとおりです。

class Day
    include MongoMapper::Document
    key :number,            Integer

    key :pageviews,         Integer
    key :shown_injs,        Integer
    key :shown_pops,        Integer
    key :shown_custs,       Integer
    key :shown_lights,      Integer
    key :shown_globs,       Integer

    key :top_agents_shown,      Array
    key :top_keyword_triggers,  Array
    key :top_urls_visited,      Array
    key :top_inj_shown,     Array
    key :top_pop_shown,     Array
    key :top_cust_shown,        Array
    key :top_light_shown,       Array
    key :top_glob_shown,        Array

end

世界で何が起こっているのですか?異なる名前の IDENTICAL メソッドが機能し、他のメソッドが機能しないのはなぜですか? なぜそれらの特定の2つですか?ビューではなくコントローラーで機能するのはなぜですか?

4

1 に答える 1

1

ビューは @today.top_agents_snown を呼び出しますが、top_agents_shown を定義します。ただの誤字。そんな日もあります!

于 2012-08-02T01:57:09.877 に答える