2010-07-02 46 views
3

我有相同的问题,因为this guy,因为没有人回答,我决定重新发布:Rails的帮手“集合中选择”

我一直在努力实现这个 jQuery插件我app.I需要帮助 试图输出这样的事情

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

使用轨道帮手......这个问题 是佣工似乎永远输出 title属性选项标签.. 这是该插件

请帮忙的关键,在此先感谢

编辑:我目前的Rails代码是

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

简单输出

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

所以基本上我需要的是一种方式 也添加标题属性到我的 选项。

+0

可能重复的[帮助与导轨collection_select \ [编辑\]](http://stackoverflow.com/questions/3143478/help-with-rails-collection-select-edited) – redsquare 2010-07-02 18:34:54

+0

如果它不是一个复制之前,我的答案(无意)确实使它成为一个:o – HurnsMobile 2010-07-02 18:48:39

回答

2

你有没有想过要自己帮手?我刚刚从rails source中复制了该代码,然后更改了名称并添加了标题。的

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

它有点哈克,但你可以这样做:

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

这将与选项的文本内容分配的称号。或者,您可以使用生成的ID进行更加随意的操作。