найти метод, имеющий проблемы с исключением переменной в представлении - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь отобразить электронную почту пользователя в представлении с User.find(@id).email, но это дает мне ошибку couldn't find user without id, но я уверен, что @id содержит идентификатор 3, потому что <%=@id%> отображает 3. Еще одна вещь, если яЖесткий код с идентификатором User.find(3).email успешно отображает электронную почту. Проблема возникает только тогда, когда я добавляю переменную @id в качестве параметра в метод поиска, что здесь происходит? Заранее спасибо.

Просмотр/profile.html.erb

   <% @books.each do |book|%>
 <%=book.user_id %>      =>displays 3
 <%= User.find(book.user_id).email %>    =>cant find the id
 <%=User.find(3).email%>       =>works fine

Ошибка

   Couldn't find User without an ID

    activerecord (3.1.0.rc8) lib/active_record/relation/finder_methods.rb:302:in   `find_with_ids'
    activerecord (3.1.0.rc8) lib/active_record/relation/finder_methods.rb:107:in `find'
    activerecord (3.1.0.rc8) lib/active_record/base.rb:441:in `find'
    app/views/deal/show.html.erb:83:in `block (2 levels) in     _app_views_deal_show_html_erb__772775201_99014040'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    app/views/deal/show.html.erb:80:in `block in  _app_views_deal_show_html_erb__772775201_99014040'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    app/views/deal/show.html.erb:13:in `_app_views_deal_show_html_erb__772775201_99014040'
    actionpack (3.1.0.rc8) lib/action_view/template.rb:144:in `block in render'
    activesupport (3.1.0.rc8) lib/active_support/notifications.rb:55:in `instrument'
   actionpack (3.1.0.rc8) lib/action_view/template.rb:142:in `render'
   actionpack (3.1.0.rc8) lib/action_view/renderer/template_renderer.rb:40:in  `block     (2levels) in render_template'n/finder_methods.rb:302:in   `find_with_ids'
    activerecord (3.1.0.rc8) lib/active_record/relation/finder_methods.rb:107:in `find'
    activerecord (3.1.0.rc8) lib/active_record/base.rb:441:in `find'
    app/views/deal/show.html.erb:83:in `block (2 levels) in     _app_views_deal_show_html_erb__772775201_99014040'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    activerecord (3.1.0.rc8) lib/active_record/relation.rb:15:in `each'
    app/views/deal/show.html.erb:80:in `block in  _.........................

1 Ответ

1 голос
/ 21 февраля 2012

Убедитесь, что @id является целым числом. Если это так, я не понимаю, почему это не сработает. Я просто попробовал ту же самую вещь в моем собственном приложении, и она работала нормально.

Чтобы убедиться, что @id является целым числом, а не строкой, попробуйте следующее:

<%= User.find(@id.to_i).email %>

Если это не сработает, пожалуйста, скопируйте / вставьте здесь свою точную ошибку, чтобы мы могли подробнее разобраться в проблеме.

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