2012-04-30 23 views
17

helper tôi làm việc như thế này:ray helper - làm thế nào tôi có thể nhận được một helper để cho tôi một '<br/> `(hoặc đánh dấu khác)

def some_help(in_string) 
    in_string + " and more" 
end 

Nhưng tôi muốn nó làm gì để một
trước khi đầu ra và tôi tiếp tục nhận được các ký tự của mình theo nghĩa đen, nghĩa là không phá vỡ nhưng điều tôi muốn là một lỗi < br> đó là vấn đề.

nên

def some_help(in_string) 
    "<br/>" + in_string + " and more" 
end 

không hoạt động đúng.

+0

Thông thường bạn muốn đề cập đến những gì, cụ thể, không hoạt động. –

+1

Cập nhật quesrion – junky

Trả lời

33

Sử dụng tag(:br) thay vì "<br/>".

content_tag(:br) tạo mở và đóng br thẻ và sử dụng raw hoặc html_safe chỉ là xấu xí (chưa kể đến nguy hiểm).

+0

Tại sao việc sử dụng 'raw' hoặc' html_safe' là nguy hiểm? – fmmatheus

+1

Nếu bạn sử dụng 'raw' và' html_safe' với đầu vào của người dùng và quên thoát khỏi đầu vào đó, bạn sẽ tự thiết lập cho một cuộc tấn công XSS. 'raw ("
# {h user_input} ")' là ok nhưng 'raw ("
# {user_input} ")' là nguy hiểm. Sự khác biệt là phương thức 'h', là một bí danh cho phương thức' html_escape'. – Ashitaka

2

Tôi không chắc mình hiểu bạn. Bạn thêm <br /> vào chuỗi của mình và nó vẫn ở dạng đồng bằng trong khi bạn muốn nó có hiệu ứng của một dòng mới? Nếu có, bạn phải đánh dấu chuỗi của mình là html-safe. bạn làm điều này với "somestring".html_safe.

0

Đường ray tự động thoát các ký tự HTML. Sử dụng .html_safe trên chuỗi.

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