我正在尝试使用单选按钮让管理员批准用户。因此,在页面中,我列出了所有用户等待批准的列表(用户模型中的真/假值)。管理员设置“是”或在所有人的单选按钮字段上留下“否”后,他应该按下唯一的提交按钮。
我正在试图弄清楚如何将所有用户传递给控制器以进行批准更新。
<%= form_tag(approve_url, :html => { class: "form-inline"} )do |f| %>
<table>
<% @tobeapproved.each do |user| %>
<tr >
<td>
<%= user.name %>
</td>
<td>
<%= user.surname %>
</td>
<td>
<%= user.email %>
</td>
<td>
<%= label :approved %>
<%= radio_button_tag "approved[#{user.id}]", "true" %> Approved
<%= radio_button_tag "approved[#{user.id}]", "false" %> Not approved
</td>
</tr>
<% end %>
</table>
<%= f.submit %>
<% end %>
在提交时,我应该获得“已批准[id]”=&gt; {“true / false”}对吗?我对这一切都很陌生。 谢谢
答案 0 :(得分:0)
最后我想出了如何做这件事。
<%= form_tag(approve_url, :html => { class: "form-inline"}) do |f| %>
<table>
<% @tobeapproved.each do |user| %>
<tr >
<td>
<%= user.name %>
</td>
<td>
<%= user.surname %>
</td>
<td>
<%= user.email %>
</td>
<td>
<%= radio_button_tag "approved[#{user.id}]", "true" %> Approved
<%= radio_button_tag "approved[#{user.id}]", "false", true %> Not approved
</td>
</tr>
<% end %>
</table>
<%= submit_tag 'Confirm'%>
在params中给我这样的东西:
"approved"=>{"27"=>"false", "26"=>"false", "25"=>"true"}
在我的控制器中:
def update
@users = params[:approved]
logger.debug "The object is #{@users}"
respond_to do |format|
@users.each_pair do |key, value|
user = User.find(key)
user.update_attribute(:approved, value)
end
format.html { redirect_to :action => :list, notice: 'Users updated' }
end
但我想这段代码很糟糕。有人知道如何改善吗?