2010-05-17 34 views
6

Tôi muốn hiển thị cửa sổ phương thức có thông báo lỗi, khi người dùng nhập nội dung nào đó không hợp lệ vào biểu mẫu nhưng sẽ hiển thị một hành động khác nếu mọi thứ đều OK. Tuy nhiên, khi tôi cố gắng để hiển thị cửa sổ modal vớiKhông thể hiển thị JavaScript từ bộ điều khiển Rails

render :js => "jQuery.facebox(#{...})" 

chỉ JavaScript thực tế gọi được hiển thị:

try { 
    jQuery.facebox(...) 
} catch (e) { alert('RJS error:\n\n' + e.toString()); 
    alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")'); 
    throw e; 
} 
+0

Eh, câu hỏi là gì? –

+0

Câu hỏi đặt ra là: Tôi đang làm gì sai? –

+0

Hãy chắc chắn rằng bạn có một trường hợp không an toàn bạn sử dụng không có javascript. bằng không họ sẽ không biết là họ đang gặp lỗi. Như một quy tắc cá nhân tôi thấy rằng việc loại bỏ các cửa sổ phương thức tăng khả năng sử dụng ... không thực sự giúp câu hỏi, mặc dù tôi nghĩ rằng tôi sẽ chia sẻ một số từ của sự khôn ngoan. – Schneems

Trả lời

1

Hãy thử điều này

render :update do|page| 
    page << "jQuery.facebox(#{...})" 
end 
+0

Điều tương tự cũng xảy ra. –

1

Có lẽ bạn nên xác định trong cuộc gọi jQuery dataType của phản hồi bạn đang chờ đợi.

ví dụ .:

$.ajax({ 
    url: "/controller/action/id", 
    success: function(){ 
    $(this).addClass("done"); 
    }, 
    dataType: 'script' 
}); 
7

Bạn đã thử đặt mã trong một phần? Vì vậy, thay vì

render :js => "jQuery.facebox(#{...})" 

thử

render :partial => "my_facebox_popup" 

Sau đó bên trong _my_facebox_popup.html.erb bạn phần đưa mã của bạn:

<script type = "text/javascript"> 
... 
</script> 

debug bất kỳ lỗi nào bạn nhận được với firebug.

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