2013-01-09 28 views
37

Chỉ cần tự hỏi liệu có cách nào để sử dụng turbolinks trực tiếp trong đường dẫn link_to helper hay không, một chút googling không phát hiện ra bất kỳ lưu ý nào, đây là loại điều tôi đã cố gắng không sử dụng .Sử dụng turbolinks trong liên kết Rails_to

<%= link_to 'Giraffe', giraffe_path(@giraffe), :data-no-turbolink => 'true' %> 
<%= link_to 'Giraffe', giraffe_path(@giraffe), :data { :no-turbolink => 'true'} %> 

Tôi biết bạn có thể làm điều đó trong các liên kết thường xuyên như thế này

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

Ngay bây giờ tôi chỉ bao gồm các thuộc tính trên các yếu tố xung quanh liên kết như lis hoặc divs.

Xin cảm ơn trước.

Trả lời

86

Ban đầu tôi nghĩ bạn cần sử dụng cú pháp tên lửa băm cho biểu tượng nhưng đó không phải là trường hợp. Bạn có thể sử dụng mã băm data: và bên trong băm bất kỳ biểu tượng nào sử dụng dấu gạch dưới _ sẽ được chuyển thành dấu gạch ngang -.

Tôi nghĩ rằng hầu hết các nhà phát triển Rails muốn để xem sau (bao gồm bản thân mình bây giờ mà tôi biết rõ hơn):

<%= link_to('Giraffe', @giraffe, data: { no_turbolink: true }) %>

Nhưng sau cũng làm việc:

<%= link_to('Giraffe', @giraffe, 'data-no-turbolink' => true) %>

+0

nhận nó, cảm ơn! –

+0

Tôi cảm thấy xấu về việc trả lời một câu trả lời với 42 phiếu bầu, ngay cả khi tôi thực sự muốn. Nếu không, cảm ơn tôi không biết về chuyển đổi gạch dưới gạch ngang này! Sau đó, nó có nghĩa là nó không thể có dấu gạch dưới thực tế trong đầu ra? –

+0

Nếu bạn muốn có dấu gạch dưới trong đầu ra, bạn sẽ phải sử dụng dấu ngoặc kép và cú pháp tên lửa băm. –

16

Bạn có thể sử dụng biểu tượng không có vấn đề để tạo mã sau:

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

Chỉ cần làm như sau:

<%= link_to 'Giraffe', giraffe_path(@giraffe), 
      :data => { :no_turbolink => true } %> 

Lưu ý: :no_turbolink sẽ trở thành no-turbolink và giá trị sẽ được chuyển đổi sang JSON tự động sử dụng to_json, ví dụ true đến "true".

+0

Tôi nghĩ đây là câu trả lời đúng. Nó sửa lỗi chính tả trong câu hỏi ban đầu mà không cho anh ta một cách khác. –

4

Hoặc của Ruby 1.9+ cú pháp:

<%= link_to 'Foo', foo_path(@foo), data: { no_turbolink: true } %> 

Nhưng tôi đã kết thúc thả turbolinks ủng hộ Wiselinks mà làm cho hành vi rõ ràng trên tất cả các liên kết, cộng với Wiselinks cũng hỗ trợ cập nhật từng phần (ví dụ như phân trang), thay thế nhà nước (doesn lịch sử trình duyệt gây ô nhiễm, tuyệt vời để phân loại cột), gửi biểu mẫu (tuyệt vời cho các biểu mẫu tìm kiếm), chuyển hướng, hỗ trợ cho các trình duyệt không có API lịch sử và xử lý thay đổi nội dung thông minh hơn.

59

Turbolinks 5 sử dụng một cú pháp hơi khác nhau

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: false } %> 

Nguồn: Turbolinks Github Page

+1

Sau khi nâng cấp lên Rails 5, đây chắc chắn là thứ cần tìm kiếm. Đã cho tôi một thời gian để nhận ra rằng việc đặt tên thuộc tính đã thay đổi. – bovender

6

@ Joseph bạn là đúng, nhưng chỉ thay đổi nhỏ:

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: 'false' } %> 

khi tôi đang gõ turbolinks: false doesn 't làm việc với bool, chỉ hoạt động khi tôi sử dụng chuỗi giá trị turbolinks: 'false'. Vì vậy, có thể ai đó giúp thông tin này;).

+0

Rất tiếc. Nice bắt ở đó. Siêu hữu ích. Bạn đã cứu tôi rất nhiều rắc rối. –

+1

Điều này làm việc cho tôi! Cảm ơn bạn! – Schylar

0

khi bạn muốn thay đổi ngôn ngữ sử dụng tên địa phương, bạn có làm như ở đây:

<%= link_to content_tag(:span, "Українською"), {locale: :uk}, 
data:{ turbolinks: "false" }%> 
Các vấn đề liên quan