Rails helper "Collection Select" - PullRequest
       1

Rails helper "Collection Select"

3 голосов
/ 02 июля 2010

У меня точно такая же проблема, как у этого парня , поскольку никто не ответил, я решил сделать репост:

Я пытался реализовать это JQuery плагин для моего приложения. Мне нужна помощь пытаясь вывести что-то вроде этого

<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 для тегов option. что важно для этого плагина

помогите пожалуйста, заранее спасибо

Редактировать: мой текущий код рельсов

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

Так что, в принципе, мне нужен способ также добавить атрибут заголовка к моему опции.

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Думали ли вы о том, чтобы прокатить своего помощника? Я просто скопировал этот код из 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 голосов
/ 02 июля 2010

Это немного странно, но вы можете сделать что-то вроде:

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

Это назначило бы заголовок с текстовым содержанием опции. В качестве альтернативы вы можете сделать что-то более произвольное, используя сгенерированный идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...