2011-02-14 24 views
10

Trong tệp index.html.erb của tôi, tôi đang cố hiển thị tiêu đề cho đối tượng của mình (danh sách "") và bình thường "hiển thị", "chỉnh sửa" và "phá hủy" liên kết và/hoặc nút. Với: method =>: delete và: confirm => "bạn có chắc không?", Không phải link_to hoặc button_to sẽ hiển thị hộp xác nhận javascript. Dưới đây là index.html.erb tôi:Rails 3 - Javascript: xác nhận không hoạt động cho link_to và button_to với: method =>: delete

<h2><a href="#" onclick="alert('Hello world!'); return false;">Click Here for a Javascript test</a></h2> 
<table> 
    <tr> 
    <th>List Title</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr>  
<% @listings.each do |listing| %> 
    <tr> 
    <td><%= listing.title %></td> 
    <td><%= button_to 'Show', listing %></td> 
    <td><%= button_to 'Edit', edit_listing_path(listing) %></td> 
    <td><%= button_to('Destroy', listing, 
         :confirm => 'Are you sure?', :method => :delete)%> </td> 
    <td><%= link_to "Destroy", listing, :confirm => "Are you sure?", :method => :delete %> </td> 
    </tr> 
<% end %> 
</table> 

Liên kết xác nhận "Hello World" JS ở phía trên cùng của danh sách hoạt động hoàn hảo, vì vậy tôi khá chắc chắn rằng javascript không phô trương đang làm việc tốt cho ứng dụng của tôi. (Tôi cũng xác nhận rằng tôi có cần thiết-- javascript_include_tag: mặc định và csrf_meta_tag nằm trong mẫu ứng dụng của tôi.) Tài liệu Rails xác nhận các đối số mà tôi đang sử dụng được hỗ trợ (url,: confirm,: method). Tuy nhiên không phải button_to hoặc link_to sẽ tạo cảnh báo JS được chỉ định bởi: confirm. Một chút khác lạ, với chính xác cùng một đối số, button_to sẽ xóa một bản ghi trong khi link_to không.

Bất kỳ đề xuất nào về điều cần điều tra để khắc phục điều này sẽ được đánh giá cao.

Cảm ơn!

+0

Kiểm tra 'application/config. rb' để xem liệu bạn có đang tải các tệp JS mà bạn cho là mặc định hay không. (Tôi đã từng chút này gần đây khi tôi cố gắng để làm cho một ứng dụng đường ray bằng cách sử dụng jQuery thay vì Prototype. Mặc định là trống rỗng.) – Telemachus

Trả lời

2

Tôi đã gặp sự cố chính xác này trước khi tôi vô tình bao gồm cả Prototype và jQuery. Kiểm tra các tài nguyên đang được tải để đảm bảo rằng bạn không tải cả hai khung công tác bằng cách nào đó.

+1

Cảm ơn các con trỏ. Tôi là một ny ruby, nhưng sau một chút googling, tôi có thể nói rằng tôi đã thực sự hava một số vấn đề cấu hình javascript. 1) Trình xây dựng ứng dụng đường ray mà tôi đã sử dụng đặt tệp jquery.js của tôi trong thư mục "public/javascript", nhưng trong một thư mục gọi là jquery (tôi phải di chuyển nó lên một mức.) 2) tệp config/application.rb có hai dòng cấu hình javascript. Tôi đã xóa một tệp và đảm bảo tệp thứ hai trỏ đến tệp jquery.js được đề cập ở trên. Với những thay đổi tất cả đã làm việc. –

1

AFAIK vấn đề này được gây ra do sự lựa chọn link_to mà gây ra vấn đề khi phương pháp của nó là bất cứ điều gì khác hơn là GET (phương pháp http), vì vậy tôi sử dụng button_to tùy chọn mà hoạt động tốt

1

Tôi chỉ chạy vào cùng một vấn đề, Rails mới nhất có sẵn đến nay, và giải quyết nó bằng cách di chuyển các tùy chọn :confirm-html_options phần của link_to đối số, như:

<%= link_to (t '.scenarios.open'), { :controller => 'scenarios', :action => 'show', :name => scenario.name }, :confirm => 'really?' %> 

Thật vậy, cần các jquery-rails đá quý, nhưng mà ai đã ở đây và đã liên kết.

1

Kiểm tra nếu bộ chuyển đổi kịch bản phô trương Rails' cho jQuery (jquery_ujs) được nạp vào trang web của bạn, sau đó bạn không cần phải lo lắng về javascripts của bên thứ ba:

// app/assets/javascript/application.js  
//= require jquery_ujs 
+0

Đây là câu trả lời đúng :) – Ghoti

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