@modernstyle
Code GOD

Разобраться с переменными в Rails?

Наткнулся на проблему, пытаясь поместить в переменные объекты с определенными качествами


tasks_controller.rb:

(Rails 4)

def index
@incomplete_tasks = Task.find_by(status: 0)
@completed_tasks = Task.find_by(status: 1)
end



index.html.erb:

<% @incomplete_tasks.each do |task| %>
...
<% end %>



Кидает ошибку undefined method `each' for #<Task:0x007fbf850f0db0>


C банальным @tasks = Task.all все работает как надо

В чем подвох?
  • Вопрос задан
  • 3580 просмотров
Решения вопроса 1
phil_tsarik
@phil_tsarik
find_by возвращает одну запись либо nil

Попробуйте, например, Task.where(status: 0)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sck_v
@sck_v
exflow.io
И используйте named scopes.

scope :completed, -> { where(status: 1) }
scope :incompleted, -> { where(status: 0) }

А обращаться к ним: Task.completed, Task.incompleted
Ответ написан
int03e
@int03e
find_by возвращает одну запись, each для него нет. Нужно делать так:
@incomplete_tasks = Task.where(status: 0)
@completed_tasks = Task.where(status: 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы