0

这是我为填充下拉列表而编写的以下代码。

<html>
<select id = 'status_update' >
    <%  array = [{"status_name"=>"Submitted", "reachable"=>false, "transition_name"=>""}, 
                 {"status_name"=>"Replied", "reachable"=>true, "transition_name"=>"Reply"},
                 {"status_name"=>"Answered", "reachable"=>false, "transition_name"=>""},
                 {"status_name"=>"Closed", "reachable"=>false, "transition_name"=>""},
                 {"status_name"=>"Canceled", "reachable"=>true, "transition_name"=>"Cancel"}]
        array.each { |x|
        x.each do |key, value|
    %>
          <option value = "<%= #{x['transition_name']} %>" 
                  disabled = "<%= if ((#{x['reachable']}) == 'false') 
                                  return 'disabled'
                                  else 
                                  return ''
                                  end %>" ><%=  "#{x['status_name']}" %></option>
    <% end %>
    <% } %>
  </select>
</html>

在上面的代码中,array是 hashmaps 的集合,hashmaps 中的键保持不变,每个集合中有 3 个具有不同值的键。现在,我正在尝试在下拉列表中填充每个哈希图,以及它们各自键的值。当我尝试这样做时,我收到了错误

ERB 语法错误:下拉:23:语法错误,意外的 kELSE

                              else

可能很简单,但无法获得正确的方法来获取下拉列表中的哈希图。你们中的任何人都可以让我知道如何进行吗?

4

1 回答 1

0

第二个循环没有必要。这应该有效:

<% array.each do |x| %>
  <option value="<%= x['transition_name'] %>" disabled="<%= x['reachable'] ? '' : 'disabled' %>"><%= x['status_name'] %></option>
<% end %>

而不是设置disabled=""它更好地省略属性:

  <option value="<%= x['transition_name'] %>" <%= 'disabled="disabled"' unless x['reachable'] %>"><%= x['status_name'] %></option>

或者,如果这在一行中太多:

<% if x['reachable'] %>
  <option value="<%= x['transition_name'] %>"><%= x['status_name'] %></option>
<% else %>
  <option value="<%= x['transition_name'] %>" disabled="disabled"><%= x['status_name'] %></option>
<% end %>
于 2013-09-03T05:08:33.533 回答