Submit_tag不提交选中的checkbox_tag的id。Rails:提交按钮不提交值
这里是代码:
<%= form_tag pattendance_attendances_path, method: :put do %>
<% if coordinator_signed_in? || admin_signed_in? %>
<ul class="list-group">
<li class="list-group-item">
<%= radio_button_tag "round", 1 , true %> Round 1</li>
<li class="list-group-item">
<%= radio_button_tag "round", 2 %> Round 2 </li>
<li class="list-group-item">
<%= radio_button_tag "round", 3 %> Round 3 </li>
<li class="list-group-item">
<%= radio_button_tag "round", 4 %> Round 4 </li>
<li class="list-group-item">
<%= radio_button_tag "round", 5 %> Round 5 </li>
</li>
<li class="list-group-item">
<%= radio_button_tag "mark_present", "present" , true %> Present <br>
<%= radio_button_tag "mark_present", "absent" %>Absent
</li><br>
<li class="list-group-item">
<%= submit_tag "Mark Attendance"%></li>
</ul>
<% end %>
</div>
<div class="table-responsive">
<div class="col-md-8">
<table class="table table-hover">
<thead>
<tr>
<th>Mark</th>
<th><%= model_class.human_attribute_name(:team_id) %> ID</th>
<th><%= model_class.human_attribute_name(:event_id) %> Name</th>
<th><%= model_class.human_attribute_name(:round) %></th>
<th><%= model_class.human_attribute_name(:status) %></th>
<th><%=t '.actions', :default => t("helpers.actions") %></th>
</tr>
</thead>
<tbody>
<% @attendances.each do |attendance| %>
<tr>
<td><%= check_box_tag "a_ids[]", attendance.id %></td>
<td><%= attendance.team_id %></td>
<td><%= attendance.event_id %></td>
<td><%= attendance.round %></td>
<td><%= attendance.status %></td>
<td>
<%if admin_signed_in? %>
<%= link_to t('.edit', :default => t("helpers.links.edit")),
edit_attendance_path(attendance), :class => 'btn btn-default btn-xs' %>
<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
attendance_path(attendance),
:method => :delete,
:data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
:class => 'btn btn-xs btn-danger' %>
<%end%>
<%= link_to t('.show', :default => t("helpers.links.View details")),
attendance, :class => 'btn btn-default btn-xs' %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<% end %>
控制器代码:
def pattendance
params[:a_ids]
if params[:mark_present]=="present"
Attendance.where(id: params[:a_ids]).update_all(status: 'Present', round: params[:round])
else
Attendance.where(id: params[:a_ids]).update_all(status: 'Absent', round: params[:round])
end
redirect_to attendances_url
end
背后实施此方法的动机是为了纪念所有在特定事件注册的球队参加。 复选框用于选择多个团队。 我选择“Attendance.ids”,因为一个团队可以参与多个活动。所以选择Team IDS可以在所有事件中标记出队。 为了让每个使用参加ID的活动都具有独特性。
选择从单选按钮轮和状态(存在或不存在),并点击标记出勤 submit_tag应该更新选定复选框的值之后。 但是 有时值被传递,有时它们不是。
请告诉我这段代码有什么问题。这将是非常有帮助的。
控制台: 我尝试更新循环起选择复选框为 “2” 和状态 “存在”
Parameters: {"utf8"=>"✓", "authenticity_token"=>"2uzivV42tLjwuUd+QyEHvL6tCa8ZCE8xRbgJ5k7ueEcV9oaQt5yLafKmZTiFceZEY9B3wyY52qxL1f0hvqQ47A==", "round"=>"2", "mark_present"=>"present", "commit"=>"Mark Attendance"}
协调员负荷(0.1毫秒)
SELECT “协调员” * FROM。 “协调员”WHERE“协调员”。“id”=? ORDER BY“coordinators”。“id”ASC LIMIT 1 [[“id”,1]] SQL(0.2ms)
UPDATE“attendances”SET“status”='Present','round'= 1 WHERE'attendance “。”id“IS NULL 考勤负载(0.1ms)SELECT”attendances“。* FROM”attendances“WHERE”attendances“。”id“IS NULL 重定向到http://localhost:3000/attendances 已完成302在5ms中找到(ActiveRecord:0.4ms)
点击提交按钮后没有通过选定的复选框值。 当我从显示页面返回到索引页面时,值不会更新。但刷新后,它始终如一地工作
您不能在Ruby上下文中使用'checked =“checked”'。你所做的只是创建一个名为'checked'的局部变量,其值为''checked''。 – meagar
谢谢指出。但是这可以解决我的问题? –
实际上它是一个属性,它可以在窗体加载时预先选择单选按钮,现在所有的单选按钮都不是预选的。 –