Rails helper“Collection Select”

时间:2010-07-02 17:48:23

标签: jquery ruby-on-rails collections

我和this guy有完全相同的问题,因为没有人回答,我决定重新发布:

  

我一直在尝试实现这一点   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>
  

使用rails helper ...问题   是帮助者似乎永远不会输出一个   选项标签的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>
     

基本上我需要的是一种方法   还要为我添加title属性   选项。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

它有点hacky但你可以做类似的事情:

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

这将为标题分配选项的文本内容。或者,您可以使用生成的ID执行更随意的操作。