Lo primero es lo primero. Las vistas se refieren a acciones en controladores. Por lo tanto, puede haber varias vistas para cada controlador o incluso ninguna.
Entonces, si quieres renderizar @reviews
y @logs
En la misma página, primero debe instanciar ambas variables de instancia en la misma acción y luego representar ambos parciales en la misma acción. ¿Cómo haces eso? Fácil. Primero llegaste al controlador que acabas de mostrar y edita eso show
acción.
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
Segundo: vas a tu /app/views/reviews/show.html.erb
plantilla y coloque ambos parciales allí de esta manera (esto es solo un ejemplo, ajuste su marcado para que se ajuste a sus necesidades).
<h1> Reviews and Logs</h1>
<div id="reviews_part">
<%= render @reviews %>
</div>
<div id="logs_part">
<%= render @logs %>
</div>
Ahora crea 2 nuevos parciales /app/views/reviews/_review.html.erb
y /app/views/logs/_log.html.erb
y coloque todo el marcado necesario allí (use variables regulares review
y log
para admitir los objetos repetidos). Los rieles repetirán automáticamente esos parciales tantas veces como sea necesario.
O puede llamar explícitamente el render parcial
<div id="reviews_part">
<% @reviews.each do |review| %>
<%= render review %>
which is the same as
<%= render partial:"reviews/review", locals:{review:review} %>
<% end %>
</div>