2012-03-30 10 views
33

編集ページへのテーブルリンクで行を作成しようとしています。私はそれらを印刷することができるので、リンクが作成されていることを知っています。私は近づいていますが、何か重要なことを忘れていますリンクが正しく機能するように変更するにはどうすればよいですか?Railsでテーブル行をリンクにする

+0

また、trタグでonlick = location.href = 'PATH'を使用することもできます。私はいくつかのerbタグでいくつかの醜いフォーマットをしなければならなかったが、それは完全に動作する。 – jhamm

答えて

62

Robin氏によると、これは無効なHTMLです。あなたはおそらくそれをすべきではありません。

私は個人的にはイベントをtrに入れ、jQueryを使用します。 tr要素は次のようになります。

<tr data-link="<%= edit_scout_path(scout) %>"> 
    ... 
</tr> 

そして(例えばapp/assets/javascripts/scouts.jsとしてファイルに配置)に関連するJavaScriptは、このようなものになるだろう:これは持っているすべてのtr要素になるだろう

$("tr[data-link]").click(function() { 
    window.location = $(this).data("link") 
}) 

私が可能であると考えることができる最も目立たない方法でURLであるかのように振る舞います。

+1

私はそれを扱うjsの方法を理解していますが、なぜ私たちはこれをレールで処理し、jsを引き込まないのでしょうか? – jhamm

+11

Rails 3.2.3とjquery-rails 2.0.2では、 "this.dataは関数ではありません"というメッセージが出ました。 jQueryの関数の内容を 'window.location = this.dataset.link'に変更すると動作します。 –

+1

このロジックを適用したくないボタンまたはリンクが同じ行にある場合はどうなりますか?今これでかなり苦労しています。 – jwg2s

0

this.dataset.linkはIE9では機能しないため、こちらの回答はProblem using elem.dataset with IE and JSFiddleとすることをお勧めします。

+3

これは理論的に質問に答えるかもしれませんが、答えの本質的部分をここに含めることが望ましいです(http://meta.stackexchange.com/q/8259)。 、参照のためのリンクを提供する。 – Spontifixus

5

私はレールの上に新しいと私は同じ問題を抱えていると、次のされているいくつかの変更とライアンのアドバイスを使う -

$("tr").click(function() { window.location = $(this).data("link") })

あなたは$(this)を使用する必要があります。

+0

さらに、ajaxパーシャルレンダリングを使用している場合は、**。on( 'click'、function(){...}); **を使用してください。 – Gobol

+0

リンクを左下に表示するにはどうすればよいですか?私が知っている限り、それはクローラーが指定されたサイトを見つけるのを難しくします。 –

+0

あなたは簡単に見えるようにそのリンクにCSSを追加することができます。そのリンクなどの色を変更してください。 –