18
votes

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 :)!

Thanks.

2
Very confusing. I want to build a JSON object with a text field but only show 250 chars... So I need to truncate. But Rails doesn't let you truncate in a View or Model, so where do I build the JSON object?TheExit

2 Answers

39
votes

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.

27
votes

You can just call the truncate rails string method.

http://apidock.com/rails/String/truncate

"Once upon a time in a world far far away".truncate(27)

@book.content.truncate(250)

Not 100% sure if you have to include

include ActionView::Helpers::TextHelper