Я нашел здесь много похожих вопросов, но ни один из ответов не решил мою проблему.
Я получаю следующую ошибку при загрузке моей страницы в /user/2
NoMethodError in User_data#data
Showing /Users/Jimmy/Documents/Launchpad Toys/LPT_Repositories/orbit-analytics/app/views/user_data/data.erb where line #108 raised:
undefined method `<' for nil:NilClass
Extracted source (around line #108):
105: </div>
106: </div>
107:
108: <% if @videos_number < 1 %><p style="font-size: 18px; margin-top: 25px;">This user has no approved videos.</p>
109:
110: <% else %>
111:
Эта ошибка вызвана тем, что контроллер возвращает нулевое значение для всех переменных экземпляра, которые я вызываю в представлении.
Вот начало соответствующего контроллера:
class UserDataController < ApplicationController
require 'analytics_helper'
include AnalyticsHelper
def data
require "date"
@user_id = params[:user_id]
Ошибка, по-видимому, вызвана тем, что контроллер не смог найти модуль AnalyticsHelper, расположенный по адресу lib/analytics_helper.rb. Вот начало модуля:
Module AnalyticsHelper
# Average analytics calculations for a given set of videos
def analytics_tracker(video_ids)
total_likes, total_views, total_flags, total_days_visible = 0, 0, 0, 0
total_characters, total_unique_characters, total_recurring_characters, total_custom_characters, total_custom_backgrounds = 0, 0, 0, 0, 0
total_energy_level, total_emotions, total_scenes, total_duration = 0, 0, 0, 0
Я раскомментировал строку в application.rb, которая автоматически загружает файлы в каталог /lib в Rails 3:
config.autoload_paths += %W(#{config.root}/lib)
Я знаю, что эта проблема вызвана тем, что модуль не загружается, но ни одно из решений, которые я нашел, не помогло мне решить мою проблему. Любая помощь приветствуется. Спасибо.
@videos_number
? Что это за переменные в области метода и как они связаны? - person Dave Newton   schedule 25.07.2012@videos_number
определяется позже в контроллере как длина объекта ActiveRecord и, таким образом, никогда не должно бытьnil
. Удаление любого кода в представлении, который может генерировать исключение нулевого указателя, приводит к отображению представления, но без каких-либо других переменных экземпляра, вызываемых в представлении, возвращающих значение, что говорит мне о том, что проблема исходит от контроллера. Переменные области действия метода на самом деле не связаны с вопросом, я просто скопировал начало 7 или около того строки модуля. - person jimmydief   schedule 25.07.2012