私は次のようなhamlテーブルを作成しています:
%tbody
- @records.each do |br|
%tr
%td.name
= br.full_name
%td.address
= br.address
tr
全体から別のページへのリンクを作成したいと思います。これどうやってするの?
私は次のようなhamlテーブルを作成しています:
%tbody
- @records.each do |br|
%tr
%td.name
= br.full_name
%td.address
= br.address
tr
全体から別のページへのリンクを作成したいと思います。これどうやってするの?
タグ内にブロック レベルの要素をネストすること<a>
は違法であるためです。私はjQueryを使用してそれを行います。
%tr{"data-link" => url_for(:action => 'show', :id => br.id)}
%td.name
= br.full_name
%td.address
= br.address
次に、表の最後に:
:javascript
$("tr[data-link]").click(function() {
window.location = this.data("link")
})
また、マウス カーソルをポインターに変更するスタイルシートも含める必要があります。
:stylesheet
#yourtable tr
cursor: pointer;
行をブロックとして次の場所に渡すことができるはずですlink_to
。
link_to(url, html_options = {}) do
#row
end
編集:
- link_to(url, html_options = {}) do
%tr
%td.name
= br.full_name
%td.address
= br.address
OPによる編集:これは最終的に機能しました:
%tr
%td.name
= link_to(br.full_name, html_options = {:action => 'show', :id => br.id})
これがRails 4.0.2でのやり方です。私のコントローラーの名前はorder
です。
後で CSS を介して識別できるように、テーブルに ID を割り当てます。id を使用しましたorders
。
データ セルを含むテーブルの行ごとに、リンクの値を使用して "data-link" 属性を追加します (私の場合は次のよう/orders/1
になります)。
app/views/orders/index.html.haml
%table#orders
%tr
%th ...
.
.
.
- @orders.each do |order|
%tr{"data-link" => order_path(order)}
%td= ...
.
.
.
JavaScript ファイル (またはここに示す CoffeeScript ファイル) で、それぞれの「data-link」値を持つ「data-link」属性を持つテーブル行のリンクを作成します。
app/assets/javascripts/order.js.coffee
$ ->
$("tr[data-link]").click ->
window.location = @dataset.link
コントローラーのスタイルシートで、行の上にカーソルを置いたときにカーソルをポインターに変更して、クリック可能であることを示します。
app/assets/stylesheets/order.css.scss
#orders tr[data-link] {
cursor: pointer;
}