Rendering partial views with ajax calls in rails 3.1

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

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 =&gt; @host \}
   end
end

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

$\(&#39;\#tabs\-1&#39;\)\.html\(&quot;&lt;%= escape\_javascript\(render @host\) %&gt;&quot;\);

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?

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

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?

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

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

Walter

Hi,

Thank you very much 4 helping,

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

cheers,
João