2012-01-04 32 views
93

thể trùng lặp:
Best way to use html5 data attributes with rails content_tag helper?Rails - link_to helper với đĩa dữ liệu * thuộc tính

Làm thế nào tôi có thể sử dụng html5 data-* attrubute trong link_to helper của tôi (Rails)

API nói rằng tôi phải sử dụng định dạng này link_to(body, url, html_options = {}) nhưng tôi gặp lỗi khi tôi đặt nó trong html_options

Ex:

link_to "whatever", @whatever_path, { class: 'my_class', data-tooltip: 'what I want' } 
+0

nỗ lực hiện tại của bạn trông như thế nào? –

Trả lời

198

Chỉ cần vượt qua chúng trong ... Rails có một mặc định :data băm

= link_to body, url, :data => { :foo => 'bar', :this => 'that' } 

Một Gotcha - bạn phải bao quanh các biểu tượng có dấu ngoặc kép nếu chúng bao gồm dấu gạch ngang:

:data => { :'foo-bar' => 'that' } 

Cập nhật: Trong Rails 4, dấu gạch dưới sẽ được tự động chuyển thành dấu gạch ngang, vì vậy bạn có thể làm điều này:

:data => { :foo_bar => 'that' } 

Hoặc bạn chỉ có thể viết trực tiếp:

= link_to body, url, :'data-foo' => 'bar', :'data-this' => 'that' 

Cập nhật 2: Như đã chỉ ra trong các nhận xét, Ruby 1.9+ cho phép cú pháp này, mà một số người cho là sạch hơn:

{ data: { foo: "bar" } } 
+0

Nó hoạt động hoàn hảo, tôi có thể hỏi => bạn đã chú ý đến điều đó ở đâu: cú pháp dữ liệu? – eveevans

+1

Tôi nghĩ rằng nó nằm trong [Railscast] (http://railscasts.com)? Tôi không chắc. Tôi đã sử dụng nó một thời gian. Nó được định nghĩa trong nguồn Rails nếu bạn muốn poke xung quanh. – sethvargo

+6

Tôi muốn chỉ ra đây cho các khách truy cập trong tương lai với cú pháp Ruby 1.9 mới, chỉ có phương thức đầu tiên hoạt động. Vì vậy, bạn có thể làm điều này: dữ liệu: {type: 'remote'} nhưng không phải là: 'data-type': 'remote' – Ashitaka

3

Thêm một thuộc tính data- bằng cách làm như sau:

link_to "Hello", hello_path, :"data-attribute" => "yeah!" 
Các vấn đề liên quan