ошибка нулевого объекта - PullRequest
0 голосов
/ 11 февраля 2010

Вот вывод:

 Parameters: {"action"=>"confirm", "id"=>"1", "controller"=>"sites"}
 User Columns (2.2ms)   SHOW FIELDS FROM `users`
 User Load (0.3ms)   SELECT * FROM `users` WHERE (`users`.`id` = 2) LIMIT 1
 School Load (0.3ms)   SELECT * FROM `schools` LIMIT 1
 Rendering template within layouts/application
 Rendering sites/confirm

ActionView::TemplateError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map) on line #4 of app/views/sites/confirm.erb:
 1: 
 2:  <%   
 3:    form_for(:site, :url => {:action => :confirm}) do 
 4:    select_tag(:id, options_from_collection_for_select(@confirm, 'id', 'confirm')) 
 5:    end
 6:   %>

Даже когда я сделал: @confirm = Request.find (: all) в контроллере, он все равно вернул ошибку.

Контроллер сайтов:

def confirm
x = current_user.contact.contactable
@confirm = Request.find(:all, :conditions => ["location_id = ?", x])
end

Подтверждение просмотра в папке сайтов:

<%   
form_for(:site, :url => {:action => :confirm}) do 
select_tag(:id, options_from_collection_for_select(@confirm, 'id', 'confirm')) 
end
%>

Есть идеи, почему? Ошибка возникает в строке 4. Я считаю, что @confirm не является массивом, хотя это должно быть потому, что в контроллере я передаю в него два элемента из таблицы. Я сделал параметры options_from_collection_for_select похожими на те, что описаны в руководстве по рельсам. По сути, я хочу показать список опций на выбор в зависимости от того, соответствуют ли эти опции местоположению текущего пользователя. Спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 05 января 2011

Является ли действие после ключевого слова private в вашем контроллере?

Я понимаю, что это поздний пост в старой теме. Мы надеемся, что это поможет либо Оригинальному постеру, либо кому-либо еще, имеющему эту проблему.

1 голос
/ 11 февраля 2010

Ошибка подразумевает, что переменная экземпляра @confirm в методе confirm вашего контроллера равна nil. Можете ли вы добавить запись в журнал, чтобы проверить, так ли это на самом деле?


Редактировать: Я только что заметил, что ваш блок form_for, как указано в вопросе, использует:

<%= form_for ... %>

Когда это должно быть:

<% form_for ... %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...