Перво -на первый взгляд. Просмотры относятся к действиям в контроллерах. Таким образом, может быть несколько просмотров для каждого контроллера или даже ни одного.
Итак, если вы хотите отображать @reviews
а также @logs
На одной и той же странице вы должны сначала создать оба переменных экземпляра в одном и том же действии, а затем отображать оба частичных в одном и том же действии. Как ты это делаешь? Легкий. Сначала вы добрались до контроллера, который вы только что показали, и отредактируете это show
действие.
def show
# You can set the variable in the if-clause
# And you also need to use static finders with a hash as an argument in Rails4
if (@user = User.find_by(name: params[:id]))
@reviews = @user.reviews.all
@logs = @user.logs.all
# You don't need to call render explicitly
# if you render the view with the same name as the action
else
render file: 'public/404', status: 404, formats: [html]
end
end
Второе: вы идете к своему /app/views/reviews/show.html.erb
Шаблон и поместите туда оба частичного такого (это всего лишь пример, отрегулируйте свою разметку, чтобы соответствовать вашим потребностям).
<h1> Reviews and Logs</h1>
<div id="reviews_part">
<%= render @reviews %>
</div>
<div id="logs_part">
<%= render @logs %>
</div>
Теперь создайте 2 новые частичные /app/views/reviews/_review.html.erb
а также /app/views/logs/_log.html.erb
и поместите туда всю необходимую наценку (используйте обычные переменные review
а также log
Чтобы распространить повторяющиеся объекты). Rails автоматически повторяет эти частичные столько раз, сколько необходимо.
Или вы можете явно вызвать частичное рендерин
<div id="reviews_part">
<% @reviews.each do |review| %>
<%= render review %>
which is the same as
<%= render partial:"reviews/review", locals:{review:review} %>
<% end %>
</div>