Ruby on rails Rails:通过复选框选择项目,然后在按下按钮时对其执行操作?
我的最终目标是显示各种活动记录对象的列表,让用户通过复选框选择其中的一些对象,然后最后按下按钮触发对它们采取的一些操作 例如,假设这些活动录制对象代表歌曲,我希望用户能够选择歌曲列表,然后单击“保存播放列表”按钮,将所选歌曲列表传递给控制器中的某些功能 我相信我会首先从一个列表开始,在我的视图中,这些列表旁边有复选框。我想它会像这样:Ruby on rails Rails:通过复选框选择项目,然后在按下按钮时对其执行操作?,ruby-on-rails,checkbox,submit,Ruby On Rails,Checkbox,Submit,我的最终目标是显示各种活动记录对象的列表,让用户通过复选框选择其中的一些对象,然后最后按下按钮触发对它们采取的一些操作 例如,假设这些活动录制对象代表歌曲,我希望用户能够选择歌曲列表,然后单击“保存播放列表”按钮,将所选歌曲列表传递给控制器中的某些功能 我相信我会首先从一个列表开始,在我的视图中,这些列表旁边有复选框。我想它会像这样: <table class='table table-bordered'> <thead> <tr> &
<table class='table table-bordered'>
<thead>
<tr>
<th style="width:30px;"> Save to Playlist? </th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
</tbody>
</table>
<%= form_tag playlists_path %>
<table>
...
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
<%= submit_tag "Create Playlist" %>
<% end %>
是否保存到播放列表?
名称
如果我正确理解复选框代码,我所拥有的应该允许我传递一个带有我所选歌曲ID的选定歌曲数组
我只是不知道如何用一个链接到复选框的按钮来完成这个任务,这样当它被按下时,它就会将数组传递给我控制器中的一个方法
任何意见都是值得赞赏的,即使它指出我的设计有缺陷,并且有更好的方法。谢谢 你在正确的轨道上 实现这一点的最佳方法是将其全部放在一个框架内(否则,假设pre-Rails-5.1) 实际上,您可以像这样查看标记:
<table class='table table-bordered'>
<thead>
<tr>
<th style="width:30px;"> Save to Playlist? </th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
</tbody>
</table>
<%= form_tag playlists_path %>
<table>
...
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
<%= submit_tag "Create Playlist" %>
<% end %>
...
在这里,您需要控制器方法的路由,我任意编造了
playlists\u path
,假设您的路由中只有资源:playlists,仅:[:create]
,以匹配您的示例。您的思路正确
实现这一点的最佳方法是将其全部放在一个框架内(否则,假设pre-Rails-5.1)
实际上,您可以像这样查看标记:
<table class='table table-bordered'>
<thead>
<tr>
<th style="width:30px;"> Save to Playlist? </th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
</tbody>
</table>
<%= form_tag playlists_path %>
<table>
...
<% @songs.each do |song| %>
<tr>
<td><%= check_box( "songs_selected", "selected_songs[]", { multiple: true }, song.id, nil) %>
<td><%= song.name %></td>
</tr>
<% end %>
<%= submit_tag "Create Playlist" %>
<% end %>
...
在这里,您需要控制器方法的路由,我任意编造了playlists\u path
,假设您的路由中只有资源:playlists:[:create]
,以匹配您的示例。最简单的方法是将这些复选框设置为数组。然后将其从
包装成一个,这样当按下按钮时,提交此表单,您将获得所有歌曲的ID到控制器
例如:-
<%= form_tag you_path, method: :post, id: 'send-songs-id', class: 'form-horizontal' do %>
<table class='table table-bordered'>
<thead>
<tr>
<th style="width:30px;"> Save to Playlist? </th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%=check_box_tag 'selected_songs[]', song.id%></td>
<td><%= song.name %></td>
</tr>
<% end %>
<%= content_tag :button, :type => :submit, class: 'btn btn-success' do %>
Submit
<%end%>
</tbody>
</table>
<%end%>
最简单的方法是将这些复选框设置为数组。然后将其从
包装成一个,这样当按下按钮时,提交此表单,您将获得所有歌曲的ID到控制器
例如:-
<%= form_tag you_path, method: :post, id: 'send-songs-id', class: 'form-horizontal' do %>
<table class='table table-bordered'>
<thead>
<tr>
<th style="width:30px;"> Save to Playlist? </th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%=check_box_tag 'selected_songs[]', song.id%></td>
<td><%= song.name %></td>
</tr>
<% end %>
<%= content_tag :button, :type => :submit, class: 'btn btn-success' do %>
Submit
<%end%>
</tbody>
</table>
<%end%>