Rails 3 - усечь в контроллере? - PullRequest
18 голосов
/ 27 октября 2010

В моем контроллере я создаю объект json для книг.Я хочу показать truncate(book.content, 250).

Это не работает в контроллере рельсов.И учитывая, что это рендер JSON, я не использую представление.Так как же усечь?Я не хочу, чтобы мой объект JSON был огромным:)!

Спасибо.

Ответы [ 2 ]

36 голосов
/ 27 октября 2010

Вы можете использовать много способов для достижения этой цели.Наиболее убедительным было бы просто включить в контроллер подходящего помощника.В этом случае это будет:

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

В качестве альтернативы вы также можете создать частичное, которое генерирует необходимый код, например _truncate.html.erb с правильным кодом:

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

затем сделайте это в своем виде:

result = render_to_string :partial => 'truncate'

Надеюсь, это поможет.

27 голосов
/ 31 марта 2013

Вы можете просто вызвать метод строки усеченных рельсов.

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

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

@book.content.truncate(250)

Не уверен на 100%, нужно ли включать

include ActionView::Helpers::TextHelper
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...