2011-12-12 27 views
40

Tôi đang sử dụng điện thoại di động với jQuery On Rails.Làm cách nào để thoát dấu gạch ngang "-" trong biểu tượng Ruby?

Tôi muốn tạo liên kết nút ngụ ý có data-role="button" xuất hiện trong HTML được tạo.

Tôi đã thử:

<%= link_to "Play", game_play_path, :data-role => "button" %> 

Nhưng sau đó, tôi nhận được một lỗi

undefined local variable or method `role' for #<#<Class:0x007fdc25668ee8>:0x007fdc25658610> 

Có cách nào để thoát khỏi dash sử dụng :xxx ký hiệu hay nên tôi chỉ sử dụng các ký hiệu "xxx" ?

(Tôi đồng ý đó là một câu hỏi thẩm mỹ, nhưng tôi muốn mã của tôi để phù hợp và không thích hợp ngoại lệ)

Trả lời

73

Sử dụng dấu nháy đơn xung quanh tên biểu tượng, có tiền tố đại tràng:

:'data-role' => 'button' 

Và đây là một tham khảo tốt về ký hiệu:

http://www.troubleshooters.com/codecorn/ruby/symbols.htm#_What_do_symbols_look_like

+2

Hoặc báo giá kép - hoạt động tốt. Cũng lưu ý rằng bạn [không thể sử dụng biểu tượng được thoát theo cách như vậy với cú pháp băm thay thế 1.9] (http://stackoverflow.com/questions/2134702/ruby-1-9-hash-with-a-dash- in-a-key) – arcresu

+0

Cảm ơn tất cả mọi người, tôi đã bình chọn cho những câu trả lời hoàn chỉnh nhất nhưng tất cả những đóng góp đều được chào đón! :) –

+2

Là một thói quen, tôi thường sử dụng dấu ngoặc kép cho khi nào sẽ có nội suy chuỗi, và duy nhất cho khi chuỗi nên được bất biến. –

3

Wrap nó trong dấu ngoặc kép duy nhất:

:'data-role' => "button" 
2
<%= link_to "Play", game_play_path, :"data-role" => "button" %> 
+1

Hoặc cách khác sử dụng một chuỗi thẳng ' "dữ liệu vai trò"'. Không cần nó là một biểu tượng. #codegolf –

12

Nếu bạn tìm thấy những cú pháp <%= link_to "Play", game_play_path, :"data-role" => "button" %> xấu xí vì nó sử dụng các cú pháp băm cũ, một cách khác để làm điều đó mà liên quan đến việc sử dụng ruby ​​1,9 cú pháp cho băm được làm như sau:

<%= link_to "Play", game_play_path, data: {role: "button"} %> 

Hàm băm imbrication tạo ra dấu nối giữa dữ liệu và vai trò trong đầu ra html.

Hãy thận trọng vì điều này chỉ hoạt động với các thuộc tính dữ liệu-một số, nhưng trong trường hợp của bạn, đó là một lựa chọn thay thế dễ chịu hơn.

Ngoài ra, nếu bạn có nhiều thuộc tính dữ liệu gì đó, bạn có thể viết chúng cũng như trong các hash lồng nhau:

<%= link_to "Play", game_play_path, data: {role: "button", other1: "value1", other2: "value2"} %> 
Các vấn đề liên quan