Rails show views from a different controller

In my Ruby on Rails application

I have a page Aboutus - This has a Controller and View. Has no model.

I have a Comments model (generated by the rails generate scaffold
comment) - This has a Controller, view, model

On my Aboutus page, I want to show the “Comments” from the comments
model, so I am thinking of using the Comments index action (to list
comments) and new action (to create new comments) on my Aboutus page.

I am having trouble getting this right.

This is what I did: Aboutus controller, I added
redirect_to :controller => “comments”, :action => “index”

Aboutus views, I added
<%= render ‘comments/index’ %>

It doesnt work, gives me Undefined redirect_to and nil object @comments
errors. Could you advise me

  1. A proper way to do this
  2. Syntax
  3. Any thing to do to config.rb ?

You need to take the redirect_to out of the about_us action, and instead
just set an instance variable that has the comments that you want to
display.

app/controllers/pages_controller.rb

class Pages < ApplicationController
def about_us
@comments = Comment.all
end
end

Then all you need to do is render the comments page.

app/views/pages/about_us.html.erb

<%= render ‘comments/index’ %>

app/views/comments/index.html.erb

<%= for comment in @comments %>

However, really you should put the part of the comments/index.html.erb
that is shared with about_us.html.erb into a partial, so that both views
can use the same code.

app/views/comments/_all_comments.html.erb

<%= for comment in comments %>

‘comments’ is a local variable here, so you need to define this variable
when you call the ‘render’ method.

app/views/pages/about_us.html.erb

<%= render ‘comments/all_comments’, :comments => @comments %>

Arailsdemo A. wrote in post #959802:

You need to take the redirect_to out of the about_us action, and instead
just set an instance variable that has the comments that you want to
display.

That is Awesome, just works like I wanted. Thank you so much.