Reputation: 16898
One of my model objects has a 'text' column that contains the full HTML of a web page.
I'd like to write a controller action that simply returns this HTML directly from the controller rather than passing it through the .erb templates like the rest of the actions on the controller.
My first thought was to pull this action into a new controller and make a custom .erb template with an empty layout, and just <%= modelObject.htmlContent %>
in the template - but I wondered if there were a better way to do this in Rails.
Upvotes: 84
Views: 90333
Reputation: 2750
In latest Rails (4.1.x), at least, this is much simpler than the accepted answer:
def show
render html: '<div>html goes here</div>'.html_safe
end
Upvotes: 91
Reputation: 7684
Its works for me
def show
@model_object = ModelObject.find(params[:id])
respond_to do |format|
format.html { render :inline => "<%== @model_object['html'] %>" }
end
end
Upvotes: 4
Reputation: 22336
In your controller respond_to
block, you can use:
render :text => @model_object.html_content
or:
render :inline => "<%= @model_object.html_content %>"
So, something like:
def show
@model_object = ModelObject.find(params[:id])
respond_to do |format|
format.html { render :text => @model_object.html_content }
end
end
Upvotes: 111