2012-06-25 3 views
5

J'essaie de désactiver une balise de sélection. Les options pour remplir nos attributs non-base de données, mais plutôt un tableau d'entiers, donc collection_select ne semble pas fonctionner dans cette situation.rails - désactiver la balise de sélection

technique

1:

select_tag(:zev_qty, options_for_select(display_quantity(@order_subject_supplies_request.site), {:disabled => display_quantity(@order_subject_supplies_request.site)})) 

def display_quantity(site) 
    if site 
    site.open_site? ? [[0,0],[1,1],[2,2]] : [[0,0],[1,1]] 
    else 
    [] 
    end 
end 

Ce qui précède est pas ce que je veux. Il désactive les options et non l'étiquette de sélection.

technique 2:

f.select(:zev_qty, display_quantity(@order_subject_supplies_request.site), {:disabled => true}) 
    def display_quantity(site) 
    if site 
     site.open_site? ? [0,1,2] : [0,1] 
    else 
     [] 
    end 
    end 

La précède ne fonctionne pas. Aucune des options n'est désactivée. Alors que les valeurs correctes s'affichent dans la liste déroulante dans les deux cas, la balise de sélection n'est pas désactivée, et notez que dans cet exemple, je mets juste désactivé à vrai, mais bien sûr je désactiverais les balises de sélection conditionnellement.

Répondre

12

La méthode select est définie comme

f.select(method, choices, options = {}, html_options = {}), 

afin que votre deuxième tentative était presque correcte, sauf que l'option désactivée doit être spécifié dans un hachage qui est le quatrième paramètre afin d'appliquer comme un attribut à la sélectionnez le tag lui-même.

Questions connexes