Создание строки таблицы в ссылке в 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>
Ответы
Ответ 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).
Ответ 3
Возможно, вы захотите рассмотреть ответ здесь Проблема с использованием elem.dataset с IE и JSFiddle, потому что this.dataset.link не будет работать в IE9.
Ответ 4
Вот мой способ сделать эти ссылки remote: true
$("tr[data-link]").click(function () {
$.ajax({
url: this.getAttribute('data-link'),
dataType: "script",
type: "GET"
});
event.preventDefault();
});