Closing HTML Tags, or Containing HTML

How are you gentlemen?

I have a view where I need to render some HTML stored in site.html_code

  <%= site.html_code %>

The problem is, when I do that, it changes all the links on the rest of
the page that are pulled in by layout.

So instead of my "Home" link pointing to "/main/index", it'll now point
to "URL_FROM_site.html_code/http://localhost:3000/main/index".

I figure I can go in and change the navigation links in the layout, but
is there a way to just "contain" the HTML from site.html_code so that it
doesn't affect the rest of the page.

Joe Peck wrote:

is there a way to just "contain" the HTML from site.html_code so that it
doesn't affect the rest of the page.

How are you displaying the views in your layout? Regardless of what you
are rendering in the layout, the links shouldn't be changing. I have
views with links in them that don't randomly change. Sounds like you
might have some kind of HTML formatting issue. In my views I render the
content by:

<%=@content_for_layout%>

Are you doing something similar? If html_code is a partial you want to
say:

<%= render :partial => 'html_code' %>

How are you displaying the views in your layout? Regardless of what you
are rendering in the layout, the links shouldn't be changing. I have
views with links in them that don't randomly change. Sounds like you
might have some kind of HTML formatting issue. In my views I render the
content by:

<%=@content_for_layout%>

Are you doing something similar? If html_code is a partial you want to
say:

<%= render :partial => 'html_code' %>

I'm rendering the content in the layout like this:
<%= yield -%>

When I render site.html_code, html_code is a column in the Sites table
that holds the HTML of that Site. Is there any way to "encapsulate" the
rendered HTML code so that it can't affect the rest of the page?

I'm rendering the content in the layout like this:
<%= yield -%>

When I render site.html_code, html_code is a column in the Sites table
that holds the HTML of that Site. Is there any way to "encapsulate" the
rendered HTML code so that it can't affect the rest of the page?

I render "html_code" like this:
<%= @site.html_code %>

Somehow, it is changing the nav-links in my layout. Might it have
something to do that the "html_code" is all the HTML from a Wayback
result for the site?

It could conceivably make the browser do all sorts of things if what you end up with is invalid html (unclosed tags etc...) or html designed for a different doctype than your page. If it's just all the html from wayback (including for example the head or body tags) then it's going to be very yucky. sticking it in a frame/iframe might be workable.

Fred

Okay, I figured it out. "src" has to be a URL, so I just did this.

<iframe src="<%= url_for :action => :show_site_html_code, :site_id =>
@site.id %>" width="100%" height="700 px">
</iframe>

Then in the controller:
def show_site_html_code
  @site = Site.find_by_id(params[:site_id])
  render(:layout => false)
end

Hopefully this can help someone else who wants to know how to use
iframes with rails like this.

Good thread to read right here:
http://www.ruby-forum.com/topic/144196#new