2010-07-02 6 views
3

J'ai exactement le même problème que this guy, puisque personne n'a répondu, j'ai décidé de rediffuser:aide Rails « Select Collection »

J'ai essayé de mettre en œuvre ce plugin jquery à mon App.I besoin d'aide essayer quelque chose de sortie comme celui-ci

<select name="user[university_id]" id="user_university_id" class="selectable"> 
<option value="1" title="uni1">Uni1</option> 
<option value="2" title="uni2">Uni2</option> 
</select> 

en utilisant une aide de rails ... le problème est les aides ne semblent jamais pour produire un attribut title aux balises d'options .. qui est critique pour ce plugin

s'il vous plaît aider, merci à l'avance

Edit: mon code actuel rails est

<%= f.collection_select(:university_id,University.all,:id,:name)% 

qui sort simplement

<select name="user[university_id]" id="user_university_id"> 
     <option value="1">Uni1</option> 
     <option value="2">Uni2</option> 
    </select> 

Donc, fondamentalement, ce dont j'ai besoin est un moyen de également ajouter un attribut de titre à mes options.

+0

double possible de [Aide avec rails collection_select \ [édité \]] (http://stackoverflow.com/questions/3143478/help-with-rails-collection-select-edited) – redsquare

+0

Si elle n'a pas été un dupliquer avant, ma réponse (involontairement) en a fait un: o – HurnsMobile

Répondre

2

Avez-vous pensé à rouler votre propre aide? Je viens de copier ce code sur le rails source, puis j'ai changé le nom et ajouté le titre.

def options_for_select_with_title(container, selected = nil) 
    return container if String === container 

    container = container.to_a if Hash === container 
    selected, disabled = extract_selected_and_disabled(selected) 

    options_for_select = container.inject([]) do |options, element| 
     text, value = option_text_and_value(element) 
     selected_attribute = ' selected="selected"' if option_value_selected?(value, selected) 
     disabled_attribute = ' disabled="disabled"' if disabled && option_value_selected?(value, disabled) 
     options << %(<option title="#{html_escape(value.to_s.downcase)}" value="#{html_escape(value.to_s)}"#{selected_attribute}#{disabled_attribute}>#{html_escape(text.to_s)}</option>) 
    end 

    options_for_select.join("\n").html_safe 
    end 
0

Son un peu hacky mais vous pouvez faire quelque chose comme:

$('#user_university_id option').each(function(){ 
    var optText = $(this).html(); 
    $(this).attr('title', optText); 
}) 

Ce attribuerait le titre avec le contenu du texte de l'option. Alternativement, vous pouvez faire quelque chose de plus arbitraire en utilisant un identifiant généré.