Я знаю, что есть много статей о вложенных ресурсах Rails, и я прошел через многие из них, но ничто не отвечает на мой вопрос.Вложенные ресурсы в представлениях Rails
У меня есть 3 модели: пользователь, группа и микропоста. Пользователь подписывается на группы, каждый из которых имеет несколько микросообщений. Все ассоциации действуют и работают нормально.
Я хочу добиться того, чтобы на главной странице, где у пользователей есть вкладки своих групп, перечислены микропосты внутри этой группы.
Это то, что я делаю в данный момент:
#Home Controller
def home
if logged_in?
@groups=current_user.group
end
end
Я создал функцию в модели пользователя, которая возвращает microposts, принадлежащие к определенной группе
def group_feed(group_id)
microposts_ids = "SELECT micropost_id from groupings WHERE group_id IN (#{group_id})"
Micropost.where("id IN (#{microposts_ids})")
end
На мой взгляд
<div class="panel-body">
<div class="tab-content">
<% @groups.each do |group| %>
<div class="tab-pane fade <%= 'in active' if current_user.group.first == group %>" id="<%=(group.name.gsub(/[0-9]+/, "")+group.id.to_s).parameterize%>">
<div class="panel panel-default">
<%= render current_user.group_feed(group.id) %>
</div>
</div>
<% end %>
</div>
</div>
В настоящий момент это работает нормально, но я подозреваю, что это правильный способ сделать это. Я хотел бы иметь возможность передавать ресурсы с контроллера на представление, а не вызывать действие модели из представления.
Есть ли способ определить @microposts в контроллере и установить его в каждой группе в @groups?
Я думаю, вы можете найти больше, если будете искать «активное отношение к записи (суда)» – jphager2