1

私は次のようなhamlテーブルを作成しています:

%tbody
  - @records.each do |br|
    %tr
      %td.name
        = br.full_name
      %td.address
        = br.address

tr全体から別のページへのリンクを作成したいと思います。これどうやってするの?

4

3 に答える 3

4

タグ内にブロック レベルの要素をネストすること<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;
于 2012-07-14T10:17:58.653 に答える
1

行をブロックとして次の場所に渡すことができるはずです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})
于 2012-07-13T21:49:00.697 に答える
0

これが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;
}
于 2014-01-31T14:25:52.403 に答える