Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What to use instead of `render :text` (and `render nothing: true`) in rails 5.1 and later?

Rails 5.1 removes a whole load of previously deprecated methods. Among them is the old friend render :text.

It was very useful when you need to render some text, but don't want the overhead of a view template. Examples:

render text: "ok" render text: t('business_rules.project_access_denied'), status: 401 

What to use instead?

like image 216
Sergio Tulentsev Avatar asked Apr 15 '17 17:04

Sergio Tulentsev


People also ask

How can you tell Rails to render without a layout *?

By default, if you use the :text option, the text is rendered without using the current layout. If you want Rails to put the text into the current layout, you need to add the layout: true option.

What does render JSON do in Rails?

render :json essentially calls to_json and returns the result to the browser with the correct headers. This is useful for AJAX calls in JavaScript where you want to return JavaScript objects to use. Additionally, you can use the callback option to specify the name of the callback you would like to call via JSONP.

What is render in rails?

Rendering is the ultimate goal of your Ruby on Rails application. You render a view, usually . html. erb files, which contain a mix of HMTL & Ruby code. A view is what the user sees.


1 Answers

The non-deprecated way is to use render :plain

Rails Guide on Layouts and Rendering:

2.2.6 Rendering Text

You can send plain text - with no markup at all - back to the browser by using the :plain option to render:

render plain: "OK" 

Bonus

Instead of render nothing: true (also removed), one should now use head :ok. Does the same thing: sends http 200 response code, just the headers, no content.

like image 162
Sergio Tulentsev Avatar answered Oct 12 '22 11:10

Sergio Tulentsev