Ruby on rails 如何允许用户取消选择意外单击的Rails单选按钮?
我有一个Rails表单,允许用户从带有复选框的对象集合中进行选择,还可以选择其中一个作为主要选择。然而,并不总是有一个主要的选择,而且现在如果用户不小心点击了一个单选按钮,似乎没有一种方法让临时用户取消选择它Ruby on rails 如何允许用户取消选择意外单击的Rails单选按钮?,ruby-on-rails,Ruby On Rails,我有一个Rails表单,允许用户从带有复选框的对象集合中进行选择,还可以选择其中一个作为主要选择。然而,并不总是有一个主要的选择,而且现在如果用户不小心点击了一个单选按钮,似乎没有一种方法让临时用户取消选择它 <%= form_tag song_part_singer_parts_path(@song, @part) do %> <input type="hidden" name="song_id" value="<%= @song.id %>" />
<%= form_tag song_part_singer_parts_path(@song, @part) do %>
<input type="hidden" name="song_id" value="<%= @song.id %>" />
<table>
<tr>
<th>Singer</th>
<th>Primary?</th>
</tr>
<% Singer.active.each do |s| %>
<tr>
<td>
<%= check_box_tag "singer_ids[]", s.id %>
<%= s.name %>
</td>
<td>
<%= radio_button_tag "primary", s.id %>
</td>
</tr>
<% end %>
</table>
<%= submit_tag "Update" %>
<% end %>
编辑:进一步的研究表明,通过单选按钮的设计,这是不可能的。我也会接受这个问题的其他解决方案。我需要用户能够选择零个或一个选项,但不能选择更多选项,并在出错时纠正错误。解决此问题的方法有多种: 1您可以在非主要位置添加一个额外的空白值单选按钮 2您可以使用带有空白默认/提示的select:
...
</table>
<%= select_tag "primary", options_from_collection_for_select(Singer.active.all, "id", "name"), prompt: 'No Primary' %>
3您可以使用javascript关闭选择:
<td>
<%= radio_button_tag "primary", s.id %>
<span class="toggle-label">Clear primary</span>
</td>
<style>
/* hide label when unchecked */
input[type=radio] + span {
display: none;
}
input[type=radio]:checked + span {
display: inline;
cursor: pointer;
}
</style>
<script>
document.addEventListener('click', function(event) {
if (event.target.matches('.toggle-label')) {
var td = event.target.parentElement;
var input = td.querySelector('input')
input.checked = false
}
});
</script>
创建一个清除收音机的“重置”按钮怎么样?如果你不想像@jvillian建议的那样使用clear选项,也许你可以使用复选框而不是单选按钮,并使用javascript只允许选中一个复选框