ruby-on-rails

Rails - Truncate in a Controller?


In my controller, I'm building a json object for books. I want to show truncate(book.content, 250).

This doesn't work in a rails controller. And given it's a JSON render, I don't use a view. So how does one truncate? I don't want my JSON object to be huge :)!


Solution

  • You can use many ways to accomplish this. The most conviniet one would be to just include the proper helper in the controller. In this it would be:

    class BooksController < ApplicationController
      include ActionView::Helpers::TextHelper
      ...
    end
    

    Alternatively you can also create a partial which generates the code you need, for example _truncate.html.erb with proper code:

    <%= truncate (@book, :length => 250) %>
    

    And then render it in your view:

    result = render_to_string :partial => 'truncate'
    

    Hope this helps.