2011-06-15 1 views
1

quelqu'un peut-il s'il vous plaît aider dans select helper, comme je suis nouveau sur Ruby On rails.Ruby on Rails - sélectionnez l'option helper

J'ai un objet JSON comme suivre,

@response = {"status" => "200", "fruit" => [ { 
    "id" => 1, 
    "name" => "Apple" 
    }, { 
    "id" => 2, 
    "name" => "Mango" 
    } ] 
} 

pour qui aide je retourne la valeur « @response de retour [ « Ratecard »] » maintenant ce que je veux de cette aide pour générer un tel code dans fichier de vue il aura boîte de sélection comme

<select name='fruit'> 
<option value="1">apple</option> 
<option value="2" selected>mango</option> 
</select> 

s'il vous plaît aider

en fait, je l'ai un assistant « Fruits_helper.rb » qui est de retour

def selFruit 
    @resp = Fruit.getFruit # this will return @response object as mentioned above 

    return @resp['fruit'] 
end 

=========================================== ========================================== Donc, dans mon fichier fruit.html.erb je je suis d'avoir petit morceau de code comme suit

<%= form_for(:AdminLogin) do |f| %> 
<div> 

<%= select_tag "fruit", options_for_select(selFruit.each{|fruit,key| [fruit[key]=>'name',fruit[key]=>'id']}) %> 

<div> 
<% end %> 

=================================== ========================================== le code ci-dessus me donne o/p comme

<select name="fruit" id="fruit"> 
<option value="id1nameApple">id1nameApple</option> 
<option value="id2nameMango">id2nameMango</option> 
</select> 

où je veux le résultat comme apple

+0

qu'avez-vous essayer? – tokland

+0

form_for -> form.select, pas select_tag. selFruit.each -> selFruit.map – tokland

Répondre

5

Mon problème a été résolu juste en code suivant, espérons que cela aidera d'autres RoR freshers trop

<%= select_tag "fruit", options_for_select(selFruit.map{|fruit,key| [fruit['name'], fruit['id']]}) %> 
+0

avec 'form_for' la forme de construction' form.select' est la manière standard. – tokland

4

Si vous utilisez (et vous devriez) un constructeur form_for:

form.select(:fruit, @response["fruit"].map { |f| [f["name"], f["id"]] }) 
+0

le code ci-dessus est erreur de lancement pour moi comme "mauvais nombre d'arguments (2 pour 0)" –