Как показать случайное изображение из поста пользователя? - PullRequest
0 голосов
/ 05 марта 2020

Я хочу отобразить изображение из поста пользователя. Я пытаюсь это:

<%= image_tag @user.posts.image_url(:thumb).order("rand()").limit(1) %>

Но у меня есть эта ошибка: "неопределенный метод` image_url '"Я не понимаю, почему, потому что, когда я хотел бы отобразить изображение пост его

<%= image_tag post.image_url %>

1 Ответ

1 голос
/ 05 марта 2020

#image_url - это метод для отдельного сообщения, но здесь вы пытаетесь вызвать его для коллекции сообщений (@user.posts возвращает ActiveRecord :: Relation). Попробуйте поменять limit(1) на first (который запустит тот же SQL) и переместите #image_url в конец цепочки вызовов. Таким образом, он получит один пост, а затем вызовет #image_url.

image_tag @user.posts.order("rand()").first.image_url(:thumb)

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

# in Controller

def action_name
  # ...
  @random_image_url = @user.posts.order("rand()").first.image_url(:thumb)
end

# in view

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