2009-02-12 32 views
7

Ẩn một DIV sẽ đủ dễ dàng trong Javascript, nhưng có một số cách Rails-y để làm điều đó không? Tôi có thể nghĩ ra một số cách để làm điều đó bằng cách gọi Javascript từ một phần (.erb), tất nhiên, nhưng tôi không muốn viết bất kỳ Javascript nào cả. Khả thi?Ẩn DIV [Rails]

Edit: Các trang được nạp và tôi muốn để ẩn DIV sau (tốt, trên) một cuộc gọi Ajax, vì vậy tôi đang ở một trong những render :update khối.

+0

thế nào/khi nào bạn muốn nó ẩn? Khi tải, sau một sự kiện, hoặc sau một cuộc gọi ajax? –

+0

chỉnh sửa câu hỏi ngay bây giờ –

+0

cảm ơn Luca. Tại sao nó xấu? Xin vui lòng xây dựng để tôi có thể biết nếu bạn có một điểm hoặc chỉ là ranting. –

Trả lời

11

Hoặc, đúng theo quan điểm của bạn:

Đối với một div class chỉ định:

<%= link_to_function "Toggle", "$('.some_div').toggle()" %> 

Đối với một ID-quy định div:

<%= link_to_function "Toggle", "$('#some_div').toggle()" %> 

(notic e băm-mark)

thời gian Đã thêm vào lớp học cụ thể div và băm để id div cụ

+0

Vì vậy, thậm chí sẽ không chuyển sang phía máy chủ, phải không? –

+0

Yep, JS thuần túy. Ẩn một div chắc chắn là miền của JS; đến máy chủ để ẩn một div là quá mức cần thiết –

+0

Yêu thích nó.Thêm –

1

Không thực sự biết đường ray, nhưng bạn có thể chỉ xuất ra một cái gì đó như style = "display: none;" vào thẻ div?

+0

Tôi cũng không biết đường ray :), nhưng cảm giác của tôi là tôi không thể .. Tôi chỉ có thể chạm vào nội dung nằm trong phần DIV hoặc một phần ID địa chỉ khác của trang HTML. –

+0

bummer :(- đoán tôi có lẽ sẽ nhận được jquery từ hộp công cụ tại thời điểm đó – seanb

+0

Nah, nó có nguyên mẫu và scriptalicious (sp.) Theo mặc định, nhưng ngay cả với JS đồng bằng nó dễ dàng Nhưng bây giờ với các phản ứng ở đây (ở trên) Tôi được thiết lập để đi –

3

Để làm cho một bản cập nhật RJS từ điều khiển của bạn:

respond_to do |format| 
    format.html 
    format.js { render(:update) { |page| page.hide('element_id') } } 
end 

Bạn có thể tra cứu API để được trả lời RJS khác.

+0

Phản hồi tuyệt vời, tuyệt vời Cảm ơn bạn –

6
render :update do |page| 
    page.hide 'div_id' 
end 

Bạn có thể ném điều này trong bạn respond_to chặn hoặc mẫu RJS.

Một mẹo hữu ích, sử dụng cú pháp giống nhau:

render :update do |page| 
    page << 'arbitrary javascript code goes here.' 
end 
1
<%= link_to_function "Toggle", visual_effect(:toggle_blind, "some_div") %>