2016-06-15 4 views
0

Ich habe eine Länderliste, die ich genannt habe in - und habe in folgendem Format analysiert:bevöl Dropdown-Liste aus Array in Ruby

{"Countries"=>[{"Name"=>"ABKHAZIA", "IsoCode"=>"AB", "HasTown"=>"I"}, {"Name"=>"ANGUILLA", "IsoCode"=>"AI", "HasTown"=>"I"}, {"Name"=>"ANTIGUA", "IsoCode"=>"AG", "HasTown"=>"I"}, .... {"Name"=>"ZIMBABWE", "IsoCode"=>"ZW", "HasTown"=>"I"}]} 

Ich mag mit diesen Daten einen Dropdown-Liste füllen. Code ich die Dropdown-Feld erstellen bin mit ist:

def country_selection_input options = {} 
options.reverse_merge!(
    :attribute => :country_iso, 
    :collection => transaction_form.get_countries, 
    :input_html => {}, 
    :prompt => 'please select', 
    :label => 'To Where' 
) 

Das ist mir mit einer Bitte wählen Sie prompt und eine Liste einen Drop-Down-Box gibt, die nur aus dem einem Wort besteht: Länder.

Die Daten sind da - aber ich bin mir nicht sicher, wie ich es in die Dropdown-Liste bekommen soll - und bin mir sicher, dass mir etwas Einfaches fehlt. Ich habe

versucht
:label_method => :Name, 

aber eine Fehlermeldung von

undefined method `Name' for #<Array:0x007fc385cecbb0> 

Dies in ein Menü drehen wird wahrscheinlich bekommen, wie ich Maßnahmen ergreifen will, basierend auf dem Land gewählt - aber - das ist der erste Schritt - Die Liste zur Arbeit bringen.

+0

Könnten Sie bitte ein Beispiel für erforderlich Drop-Down-Box zur Verfügung stellen? Welche Werte erwarten Sie dort? Vielen Dank. – retgoat

Antwort

1

Die Antwort endete

sein
def country_selection_input options = {} 
countries = transaction_form.get_countries()[:Countries] 
options.reverse_merge!(
    :attribute => :country_iso, 
    :collection => countries, 
    :label_method => :Name, 
    :value_method => :IsoCode, 
    :input_html => {}, 
    :prompt => 'please select', 
    :label => 'To Where' 
) 

call_input_from_args_hash options 

Ende