以下是我在视图文件中的内容:
<% users = {'John Doe' => 1, 'Jane Doe' => 2} %>
<% admins = [1,2,nil] %>
<% i = 1 %>
<% admins.each do |user_id| %>
<% org_struc_order = 'admin' + i.to_s %>
<% org_struc_order_text = 'Admin ' + i.to_s%>
<% if user_id %>
<%= 'Current selection for ' + org_struc_order_text + ' is '+ users.key(user_id) %>
<%= select( 'org_selections', org_struc_order, users, {:selected => users.key(user_id)}, { :include_blank => true } ) %>
<% else %>
<%= 'Select ' + org_struc_order_text + ' from dropdown' %>
<%= select( 'org_selections', org_struc_order, users, { :include_blank => true } ) %>
<% end %>
<% i = i + 1 %>
<% end %>
这部分有效。显示表单时,在第一个和第二个选择下拉框中显示相同的值“John Doe”,但其上方的标题是正确的。在第一个方框的上方,它说:
Current selection for Admin 1 is John Doe
和选择框,我有:
John Doe
在第二个方框上方,它说:
Current selection for Admin 2 is Jane Doe
但在选择框中,我看到:
John Doe
发生了什么事?
答案 0 :(得分:2)
我认为这条线存在问题,
<%= select( 'org_selections', org_struc_order, users, {:selected => users.key(user_id)}, { :include_blank => true } ) %>
更正了一个:
<%= select( 'org_selections', org_struc_order, users, {:selected => user_id}, { :include_blank => true } ) %>
您正在传递用户名而不是user_id用于选定值。