Rendering partial views with ajax calls in rails 3.1

295 views
Skip to first unread message

Joao Martins

unread,
May 21, 2012, 10:53:12 AM5/21/12
to rubyonra...@googlegroups.com
Hi, i'm starting now with rails, and i have simply question.
I need to render two partials in one ajax call:

I have the following controller:

# GET /hosts/1
# GET /hosts/1.json
def show
@host = Host.find(params[:id])

respond_to do |format|
format.html #show.html
format.js
format.json { render :json => @host }
end
end

And the respective template (show.js.erb):

$('#tabs-1').html("<%= escape_javascript(render @host) %>");

And a partial file named _host.html.erb

All this works fine, but now i need to add some other partial template
in a different id (#tabs-2), but use the same @host
How can i do this? de default render @host will use the template file
_host.html.erb. How can i call a different one like _host2.html.erb and
have the same @host instance?

Thanks
Joao

--
Posted via http://www.ruby-forum.com/.

Joao Martins

unread,
May 21, 2012, 8:45:48 AM5/21/12
to Ruby on Rails: Talk
I'm starting now with rails, and i have simply question i think.
I need to render two partials in one ajax call:

I have the following controller:

# GET /hosts/1
# GET /hosts/1.json
def show
@host = Host.find(params[:id])

respond_to do |format|
format.html #show.html
format.js
format.json { render :json => @host }
end
end

And the respective template (show.js.erb):

$('#tabs-1').html("<%= escape_javascript(render @host) %>");

And a partial file named _host.html.erb

All this works fine. The template "_host.html.erb" is rendered in div
tabs-1, but now i need to add some other partial template to a
different id (#tabs-2), but use the same @host
How can i do this? by default, render @host will use the template file
_host.html.erb. How can i call a different file like "_host2.html.erb"
and have the same @host instance available?

Thanks,
Joao

Walter Lee Davis

unread,
May 21, 2012, 6:18:02 PM5/21/12
to rubyonra...@googlegroups.com
render :partial => '_host2', :locals => { :host2 => @host }

Have a look at the Rails Guide on Views and rendering for more options.

Walter

>
> Thanks,
> Joao
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
>

Frederick Cheung

unread,
May 21, 2012, 6:17:58 PM5/21/12
to Ruby on Rails: Talk
If you call render '_host2' (or render :partial => 'host2') you'll
still be able to use @host in the template - the instance variable
copying stuff is separate from the template lookup stuff

Fred


> Thanks,
> Joao

Joao Martins

unread,
May 22, 2012, 9:21:47 AM5/22/12
to Ruby on Rails: Talk
Hi,

Thank you very much 4 helping,

working with render :partial => 'host2', :locals => { :host2 =>
@host }

cheers,
João
Reply all
Reply to author
Forward
0 new messages