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は、ハッシュマップのコレクションであり、ハッシュマップ内のキーは同じままで、各セットに異なる値を持つ 3 つのキーがあります。今、ドロップダウンで、各ハッシュマップにそれぞれのキーの値を設定しようとしています。そうしようとすると、エラーが発生します

ERB 構文エラー:ドロップダウン:23: 構文エラー、予期しない kELSE

                              else

単純かもしれませんが、ドロップダウンでハッシュマップを取得するための正しい方法を取得できません。どなたか親切に進め方を教えていただけませんか?

4

1 に答える 1

0

2 番目のループは必要ありません。これはうまくいくはずです:

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

または、これが 1 行で多すぎる場合:

<% 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 に答える