Rails 3 объекта ноль или нет - PullRequest
0 голосов
/ 18 декабря 2011

Я работаю над приложением rails, где у пользователя есть возможность загружать фотографии. Когда пользователь загрузит свои фотографии, они появятся в его профиле. Все отлично работает, кроме того, что когда нет созданных фотографий, я не могу просмотреть страницу профиля пользователя из-за отсутствия фотографии.

вот мой метод показа в users_controller.rb

def show 
@user = User.find_by_id(:id)
@photo = @user.photos.find(params[:id])
end

Вот мой show.html.erb

 <% for photo in @user.photos %>
  <%= photo.title %>
  <%= photo.description %>
  <%= image_tag photo.image_url(:thumbnail) %>
  <%= link_to "Show", photo %>
 <br>
 <% end %>

Как я могу обойти эту ошибку?

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Код вашего действия кажется неправильным ...

Должно быть так:

def show 
  @user = User.find(params[:id])
  #@photo = @user.photos.find(params[:id])
end

Я специально закомментировал третью строку, потому что я пока не уверен, что вы хотите там делать.

Переменная @user должна быть определена с использованием params[:id], учитывая, что это действие show для UsersController, поэтому идентификатор пользователя будет передаваться как params[:id].

Но затем вы идете и используете это, чтобы найти фотографию для пользователя, что меня смущает ... Атрибут Photo записи *1015*, вероятно, не будет совпадать с атрибутом User записи id атрибут.

Так что это?

1 голос
/ 18 декабря 2011

Вы можете заменить код в show.html.erb следующим:

<% if @user.photos %>
<% for photo in @user.photos %>
  <%= photo.title %>
  <%= photo.description %>
  <%= image_tag photo.image_url(:thumbnail) %>
  <%= link_to "Show", photo %>
  <br>
<% end %>
<% end %>

Проблема в том, что, когда у пользователя нет фотографий, @user.photos возвращает nil, поэтому вам нужносначала проверьте это.

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