Я пытаюсь обновить приложение rails 3.0 до 3.1 (а затем и до 3.2), но сталкиваюсь со следующей проблемой:
В моей консоли:
1.9.3p0 :026 > Film.search('art')
Sphinx Query (6.6ms) art
Sphinx Found 323 results
Course Load (2.1ms) SELECT `films`.* FROM `films` WHERE `films`.`id` IN (159, 234, 237, 238, 239, 241, 259, 274, 310, 427, 671, 786, 859, 1015, 1037, 1104, 1108, 1351, 1547, 1622)
=> [#<Film id: 159, name: .......
Но если я попытаюсь сделать следующее в представлении,
def index
...
logger.debug ">>>>>>>>>>>>>> 1"
logger.debug ">>>>>>>>>>>>>> " + Course.search('art').inspect
logger.debug ">>>>>>>>>>>>>> 2"
...
end
Я получаю следующий журнал:
Started GET "/films" for 127.0.0.1 at 2012-02-07 16:29:33 -0800
Processing by FilmssController#index as HTML
>>>>>>>>>>>>>> 1
Sphinx Query (5.1ms) art
Sphinx Found 323 results
Film Load (1.4ms) SELECT `films`.* FROM `films` WHERE `films`.`id` IN (159, 234, 237, 238, 239, 241, 259, 274, 310, 427, 671, 786, 859, 1015, 1037, 1104, 1108, 1351, 1547, 1622)
Completed 500 Internal Server Error in 281ms
NoMethodError (undefined method `type' for nil:NilClass):
app/controllers/films_controller.rb:52:in `index'
Если в контроллере заменить @ films = Film.search ('art') на @ films = Film.where ('id <100') </em>, тогда я получаю:
ActionView::Template::Error (undefined method `type' for nil:NilClass):
1:
2: <div class="item" <%= "style=\"background:transparent url('/images/corner-official-33px.png') no-repeat 653px 1px;\"" if film.producer.is_official? %>>
3: <div class="left_column" style="margin-right:10px;">
4: <%= image_tag film.producer.picture_url(:avatar), :size => '56x56' %>
5: <%= link_to film.producer.short_name, producer_path(film.producer), :style => "font-size:11px;" %>
app/views/films/_film_item.html.erb:2:in `_app_views_films__film_item_html_erb___118918907990974304_70130279039420'
app/views/films/_films.html.erb:35:in `_app_views_films__films_html_erb__4156916298260674623_70130271252280'
app/views/films/index.html.erb:7:in `_app_views_films_index_html_erb___995304993819916692_70130270918920'
app/controllers/films_controller.rb:56:in `block (2 levels) in index'
app/controllers/films_controller.rb:55:in `index'
Я изучал проблему уже пару часов, но все еще не уверен, что не так, и с чего начать отладку ...
У меня установлены следующие драгоценные камни:
рельсы (3.2.1, 3.2.0, 3.1.3, 3.0.9)
Мыслящий сфинкс (2.0.11, 2.0.10)
will_paginate (3.0.3, 3.0.2)
UPDATE:
После игры я понял, что если я поставлю 'logger.debug Film.first.inspect' до того, как я выполню поиск или предложение where, код работает нормально ... без понятия, почему !! ! Есть идеи?