2014-09-22 15 views
5

Tôi đang ở giữa việc tạo ứng dụng Rails thực đầu tiên của mình và tôi đang học khi đang di chuyển. Tôi có một tình huống mà tôi cần phải tạo thuộc tính lồng nhau trên một hình thức, và vì vậy đã được xem xét các tập railscast có liên quan đến điều đó (196 và 197). Trong tập thứ hai, anh ta sử dụng một phương thức link_to_function, dường như không còn có sẵn trong đường ray 4.1.Cách thay thế link_to_function cho đường ray 4.1

Tôi tự hỏi làm thế nào để thay thế nó. Tôi đã cố gắng để link_to, và đã thử nhiều giải pháp được đề xuất cho những người khác đã đăng một câu hỏi tương tự, nhưng vô ích.

Đây là những gì nhìn vẻ bề ngoài một phần của tôi như thế nào ở thời điểm (mặc dù, tôi đã cố gắng rất nhiều điều ...)

<p class="offset1 fields"> 
    <%= f.hidden_field :_destroy %> 
    <%= link_to "remove", '#', onclick: 'remove_fields("this")' %> 
</p> 

Và đây là tập tin .js.coffee tôi chứa remove_fields() chức năng :

remove_fields = (link) -> 
    $(link).previous("input[type=hidden]").value = 1 
    $(link).up(".fields").hide 

Chức năng này được yêu cầu xóa trường '#' sang url mà không cần gọi hàm.

Cách tốt nhất để liên kết với hàm javascript (coffeescript) trong nội dung từ chế độ xem là gì?

+0

thấy điều này http://stackoverflow.com/questions/14324919/status -of-rails-link-to-function-deprecation – tito11

Trả lời

4

Một cách hay để giải quyết vấn đề này là:

a) Đặt thuộc tính href của bạn thành "javascript: void (0);" b) Thiết lập một id DOM hoặc lớp thuộc tính CSS để liên kết của bạn

<%= link_to "remove", "javascript:void(0);", id="remove_link" %> 

c) Thêm js bấm nghe để yếu tố của bạn (xin vui lòng kiểm tra xem đây là cú pháp coffeescript thích hợp)

$ -> 
    $('#remove_link').click =()-> 
    $(link).previous("input[type=hidden]").value = 1 
    $(link).up(".fields").hide 

d) Luôn tránh sử dụng onclick: trên các phần tử html.

UPDATE:

đ) Đây là một sự thay thế của những gì có thể làm việc cho mã của bạn (sau khi bình luận của bạn):

$ -> 
    $('#remove_link').click =()-> 
    $('.offset1.fields input').attr('value', 1); 
    $('.offset1.fields').hide(); 
+0

Vẫn không hoạt động. Tôi đã thay đổi tập tin coffeescript để chỉ cần thực hiện một tuyên bố cảnh báo chỉ để kiểm tra nó, nhưng nó không bao giờ được thực hiện. Nhấp vào liên kết không làm gì cả, ngoại trừ phần dưới cùng bên trái của trình duyệt cho biết rằng nó đang thực thi "javascript: void (0);" –

+0

điều hướng đến /assets/application.js cho thấy chức năng đã được biên dịch đúng cách thành javascript và bao gồm, nhưng nó không được gọi vì bất kỳ lý do gì –

+0

là đoạn mã javascript mới của bạn bên trong tài liệu đã sẵn sàng chưa? Tôi đã cập nhật câu trả lời của mình một chút để chứng minh điều đó. –

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