Bla*_*man 35 checkbox ruby-on-rails
好奇当用户检查多个复选框(具有相同的名称值)时处理情况的"轨道方式",并将其发布回控制器.
您如何检查是否选择了多个项目,然后在ID值上进行拆分等.
Mat*_*chu 56
最简单的方法是将这些复选框设置为一个数组.
HTML:
<input type="checkbox" name="tag_ids[]" value="1" />
<input type="checkbox" name="tag_ids[]" value="2" />
<input type="checkbox" name="tag_ids[]" value="3" />
Run Code Online (Sandbox Code Playgroud)
控制器:
tag_ids = params[:tag_ids]
Run Code Online (Sandbox Code Playgroud)
(当然,您可能form_for在视图中使用基于辅助的帮助程序,因此大量分配标记ID.这只是最通用的示例.)
Fly*_*ngV 21
f.check_box :tag_ids, {multiple: true}, 1, nil
Run Code Online (Sandbox Code Playgroud)
是正确的答案:
这就是原因,有一个'multiple:true'选项允许您将输入放在一个数组中.如果没有multiple:true选项,则不允许这样做.
这是一个视图和控制器的例子,例如多个清洁工可以在多个城市。
<%= form_for(@cleaner) do |f| %>
<p>
<%= f.label :cities %><br />
<% for city in City.all %>
<%= check_box_tag "cleaner[city_ids][]", city.id, @cleaner.cities.include?(city) %>
<%=h city.name %><br />
<% end %>
</p>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
并在控制器中
def cleaner_params
params.require(:cleaner).permit(city_ids: [])
end
Run Code Online (Sandbox Code Playgroud)
您可以找到有关执行此操作的“rails 方式”的完整教程https://kolosek.com/rails-join-table/
| 归档时间: |
|
| 查看次数: |
37823 次 |
| 最近记录: |