Подтвердить что ты не робот

Создание строки таблицы в ссылке в Rails

Я пытаюсь сделать строку в таблице ссылкой на страницу редактирования. Я знаю, что ссылки создаются, потому что я могу распечатать их. Я близок, но мне не хватает чего-то важного. Что я могу изменить, чтобы ссылка работала правильно?

<h1>Scouts</h1>
<p><%= button_to "Add a new Scout", new_scout_path, :method => :get %></p>
<div class="message-board">
  <table>
    <tr>
      <th>Name</th>
      <th>Rank</th>
      <th>Advancement Date</th>
      <th>Age</th>
    </tr>  

<% @scouts.each do |scout| %>
    <tr <% link_to edit_scout_path(scout) %> >
      <td><%= scout.name %></td>
      <td><%= scout.rank %></td>
      <td><%= scout.advancement %></td>
      <td><%= scout.age %></td>
    </tr>
<% end %>
  </table>
</div>
4b9b3361

Ответ 1

Как сказал Робин, этот недопустимый HTML. Вы, вероятно, не должны этого делать.

Я лично поставил событие onclick на tr, используя jQuery. Элемент tr будет выглядеть следующим образом:

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

И тогда соответствующий JavaScript (помещенный в файл, такой как app/assets/javascripts/scouts.js) будет выглядеть примерно так:

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

Это приведет к тому, что все элементы tr, имеющие атрибут data-link, будут действовать так, как если бы они были URL-адресами самым ненавязчивым способом, я думаю, что это возможно.

Ответ 2

Я новичок в рельсах, и у меня такая же проблема, и я советую Ryan с некоторыми изменениями, которые следуют -

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

Вам нужно использовать $(this).

Ответ 4

Вот мой способ сделать эти ссылки remote: true

$("tr[data-link]").click(function () {
    $.ajax({
        url: this.getAttribute('data-link'),
        dataType: "script",
        type: "GET"
    });
    event.preventDefault();
});