Rails:在下拉列表中选择错误

时间:2012-07-12 05:01:00

标签: ruby-on-rails select

以下是我在视图文件中的内容:

<% 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 

发生了什么事?

1 个答案:

答案 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用于选定值。