2009-02-02 20 views
14

Tôi biết rằng tôi có thể làm điều này trong Rails:Viết để phản hồi trong Rails? (Giống như "tiếng vang" trong PHP)

<%="hello" %> 

nhưng là có cách nào để làm điều này

<% 
echo "hello" 
%> 

và làm cho nó hiển thị trong phản ứng?

+0

Yeah. Đối tượng tồn tại nhưng phương thức không :) phương thức undefined 'write 'cho #

+0

CgiResponse? Sử dụng ActionController :: CgiResponse.out – phresus

+0

có vấn đề gì với <%="hello" %>? –

Trả lời

14

Bạn đã thử concat.

Tôi đã thấy điều này khi đi lang thang trong tài liệu Rails. Không chắc chắn vì tôi rất mới với Rails.

+0

Chụp đẹp! http://api.rubyonrails.com/classes/ActionView/Helpers/TextHelper.html –

0

Bạn đang tìm kiếm "in" hoặc "đặt", tùy thuộc vào việc bạn có muốn một dòng mới (có thể là không). Hầu hết mọi đối tượng đều thực hiện .to_s, cũng hoạt động, mặc dù cảm giác của tôi là có thể có cách tốt hơn để làm bất cứ điều gì bạn đang cố gắng làm. Bất kỳ bối cảnh nào về điều này?

+0

Cảm ơn, không, tôi muốn xem nó trên máy khách, chứ không phải trên bảng điều khiển. –

+0

Không có lý do tại sao nó sẽ không hoạt động trên bàn điều khiển. <% = đặt "Bất kỳ mã Ruby nào ở đây"%> – phresus

+1

-1, đặt (hoặc p) kết quả đầu ra cho STDOUT theo mặc định, KHÔNG phải là nơi mà phản hồi được tạo ra. Và <% = puts ...%> sẽ tạo ra một chuỗi rỗng trong phản hồi, đặt (hoặc p) trả về nil và nil.to_s == "". – Samuel

13

gì bạn phải viết là

<% concat "bank" %> 

bây giờ bạn có thể làm điều gì đó như

<% 
    10.times do 
    concat "cat" 
    end 
%> 

trong vòng mười mèo

+1

Chính xác. Trong bối cảnh này, bạn nên sử dụng concat thay vì <% =. Cảm ơn câu trả lời của bạn. –

+0

Tôi nghĩ rằng ràng buộc rõ ràng là không cần thiết nữa ... –

+0

Vâng, tôi không có ý tưởng ràng buộc đó là gì, bản thân mình. –

6

Sử dụng concat, tôi đã thử nó và nó hoạt động. Tuy nhiên nếu bạn cần phải sử dụng ký tự HTML sử dụng:

concat(sanitize("STRING")) 

hoặc mở app/helpers/application_helper.rb của bạn và viết:

def echo(str) 
    concat sanitize str 
end 

vì vậy bạn chỉ có thể gõ: echo "hello<br />\n"

+0

điều gì xảy ra nếu bạn không khử trùng –

+0

thiên tài đơn giản :) – intepid

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