2010-10-27 42 views
16

Trong bộ điều khiển của tôi, tôi đang xây dựng một đối tượng json cho sách. Tôi muốn hiển thị truncate(book.content, 250).Rails 3 - Cắt ngắn trong bộ điều khiển?

Điều này không hoạt động trong bộ điều khiển đường ray. Và đưa ra một kết xuất JSON, tôi không sử dụng chế độ xem. Vậy làm thế nào để cắt ngắn? Tôi không muốn đối tượng JSON của tôi trở nên to lớn :)!

Cảm ơn.

+0

Rất khó hiểu. Tôi muốn xây dựng một đối tượng JSON với một trường văn bản nhưng chỉ hiển thị 250 ký tự ... Vì vậy, tôi cần phải cắt ngắn. Nhưng Rails không cho phép bạn cắt ngắn trong một khung nhìn hoặc mô hình, vậy tôi phải xây dựng đối tượng JSON ở đâu? – TheExit

Trả lời

35

Bạn có thể sử dụng nhiều cách để thực hiện việc này. Conviniet nhất sẽ chỉ bao gồm người trợ giúp thích hợp trong bộ điều khiển. Trong này nó sẽ là:

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

Hoặc bạn cũng có thể tạo một phần mà tạo ra mã bạn cần, ví dụ _truncate.html.erb với mã đúng:

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

Và sau đó render nó trong chế độ xem của bạn:

result = render_to_string :partial => 'truncate' 

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn, tôi đã làm truncate (@ book, 200) và đó là lỗi ... Khi tôi sử dụng: chiều dài nó làm việc? Lạ .. YOu không cần chiều dài trong lượt xem .. – TheExit

+1

cú pháp cắt ngắn (@book, 200) không được dùng nữa trong một thời gian và cách thích hợp để sử dụng cắt ngắn là chuyển các tùy chọn băm sau đối tượng. Tôi không chắc chắn, tại sao phương pháp không được sử dụng làm việc trong quan điểm và không phải trong bộ điều khiển, nhưng bạn chỉ nên dính vào cú pháp mới. :-) – mdrozdziel

26

Bạn chỉ có thể gọi phương thức chuỗi đường cắt ngắn.

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

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

@book.content.truncate(250) 

Không phải 100% chắc chắn nếu bạn phải bao gồm

include ActionView::Helpers::TextHelper 
+2

với tôi đây là câu trả lời hay hơn – FireDragon

+0

Đây là câu trả lời hay hơn vì bạn không phải bao gồm trình trợ giúp. Giá trị mặc định là '...', nhưng có thể bỏ qua thiếu sót: 'xxx' làm tùy chọn. – hellion

Các vấn đề liên quan