在 Rails 中提交表单后如何使复选框保留其值
How Do I make Checkboxes retain their value after submitting the form in Rails
这是表格
<%= form_tag method: "post" do |f| %>
<script src="https://cdn.iris.nitk.ac.in/design_system/assets/js/vendors/form-components/toggle-switch.js"></script>
<table class="table table-striped">
<thead>
<tr>
<th></th>
<th>Title</th>
<th>Pin To Modules Tab?</th>
</tr>
</thead>
<tbody>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_Human.png", class: 'list_image') %></td>
<td>Profile</td>
<td><%= check_box_tag '1', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/withdraw.png", class: 'list_image') %></td>
<td>Withdraw Admission</td>
<td><%= check_box_tag '2', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/attendance.png", class: 'list_image') %></td>
<td>Feedback Forms</td>
<td><%= check_box_tag '4', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<% if can? :my_grade_card, Student %>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_manage_users.png", class: 'list_image') %></td>
<td>My Grade Card</td>
<td><%= check_box_tag '5', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
<% end %>
</tr>
</tbody>
</table>
<%= submit_tag "Pin Modules",:class => "btn btn-primary btn-lg btn-block" %>
这就是我在数据库中保存的方式
def pin_modules
if request.post?
present_user = User.find(current_user.id)
present_user.misc_data[:pin_modules]=[]
(1..17).each do |i|
(params[i.to_s] ? (present_user.misc_data[:pin_modules] ||= []) << i : next)
end
present_user.save!
redirect_to '/'
end
结束
如果该值为真,则将其保存在我的数据库中。出于某种原因,正如我所看到的,仅传递了 true 的表单参数值。
我希望我的表单保留它的价值,无论它对特定用户是对还是错。
有人可以帮我解决这个问题吗?
您可以删除选项 :checked => true
,试试
<%= check_box_tag '1', true, @present_user.misc_data[:pin_modules].include?(1), data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %>
并按照此替换其他人。
这是表格
<%= form_tag method: "post" do |f| %>
<script src="https://cdn.iris.nitk.ac.in/design_system/assets/js/vendors/form-components/toggle-switch.js"></script>
<table class="table table-striped">
<thead>
<tr>
<th></th>
<th>Title</th>
<th>Pin To Modules Tab?</th>
</tr>
</thead>
<tbody>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_Human.png", class: 'list_image') %></td>
<td>Profile</td>
<td><%= check_box_tag '1', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/withdraw.png", class: 'list_image') %></td>
<td>Withdraw Admission</td>
<td><%= check_box_tag '2', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/attendance.png", class: 'list_image') %></td>
<td>Feedback Forms</td>
<td><%= check_box_tag '4', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
</tr>
<tr>
<% if can? :my_grade_card, Student %>
<td class="image"> <%= image_tag("https://cdn.iris.nitk.ac.in/images/new_dashboard/button_manage_users.png", class: 'list_image') %></td>
<td>My Grade Card</td>
<td><%= check_box_tag '5', true, true, :checked => true, data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %></td>
<% end %>
</tr>
</tbody>
</table>
<%= submit_tag "Pin Modules",:class => "btn btn-primary btn-lg btn-block" %>
这就是我在数据库中保存的方式
def pin_modules
if request.post?
present_user = User.find(current_user.id)
present_user.misc_data[:pin_modules]=[]
(1..17).each do |i|
(params[i.to_s] ? (present_user.misc_data[:pin_modules] ||= []) << i : next)
end
present_user.save!
redirect_to '/'
end
结束
如果该值为真,则将其保存在我的数据库中。出于某种原因,正如我所看到的,仅传递了 true 的表单参数值。 我希望我的表单保留它的价值,无论它对特定用户是对还是错。 有人可以帮我解决这个问题吗?
您可以删除选项 :checked => true
,试试
<%= check_box_tag '1', true, @present_user.misc_data[:pin_modules].include?(1), data: {toggle: "toggle", on: "Yes", off: "No", onstyle: "success", offstyle: "danger"} %>
并按照此替换其他人。