2012-01-04 72 views
93

可能性の重複とヘルパーのlink_to:私は私のlink_toヘルパー(レール)にHTML5 data-* attrubuteを使用するにはどうすればよい
Best way to use html5 data attributes with rails content_tag helper?Railsの - データ - *属性

API私はこの形式を使用する必要があると言いますlink_to(body, url, html_options = {})しかし、私はhtml_optionsに入れたときにエラーが発生します

例:

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

あなたの現在の試みはどのように見えますか? –

答えて

198

だけに... Railsの渡しは、デフォルト:dataハッシュ

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

一つの落とし穴があります - 記号にダッシュが含まれている場合は、記号を引用符で囲む必要があります。

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

更新:あなたがこれを行うことができますので、レール4に、アンダースコアが自動的に、ダッシュに変換されています

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

代わりにあなただけのそれを直接書き込むことができます。

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

更新2:コメントに指摘されているように、Ruby 1.9+ではこの構文が許可されていますが、一部の人はクリーナーであると信じています:

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

それは完璧に動作します。 – eveevans

+1

私はそれがRailscast(http://railscasts.com)にあったと思いますか?よく分かりません。私はしばらくそれを使用してきました。これは、あなたが周りを突きつけたい場合は、Railsソースで定義されています。 – sethvargo

+6

新しいRuby 1.9の構文では、最初のメソッドのみが動作することを、今後の訪問者に向けて指摘したいと思います。データ:{type: 'remote'}しかしこれはできません: 'data-type': 'remote' – Ashitaka

3

次の操作を行って、data-属性を追加します。

link_to "Hello", hello_path, :"data-attribute" => "yeah!"