$('#mySelect')
.find('option')
.remove()
.end()
.append('<option value="whatever">text</option>')
.val('whatever')
;
Я предлагаю вам создать дополнительный метод с вашими пользовательскими программами форматирования.
class Person
def formatted_name
name.capitalize
end
end
Это лучшее решение по сравнению с перезаписью реализация по умолчанию, потому что сеттеры и геттеры могут вызываться при обновлении / записи / сохранении записи в базе данных. Я помню, как однажды я переписал реализацию атрибута по умолчанию и каждый раз, когда запись сохранялась, атрибут обновлялся с форматированным значением.
Если вы хотите следовать этим путем, вы можете использовать alias_method_chain
или воспользоваться преимуществом наследования, включая внешний модуль.
class Person
def name_with_formatter
name_without_formatter.capitalize
end
alias_method_chain :name, :formatter
end
Также вы можете перезаписать name и вызвать read_attribute (: name)
из вашего собственного метода.
def name
read_attribute(:name).capitalize
end
def name
self[:name].capitalize
end
Опять же, не делайте этого. Создайте собственный метод.
Но что происходит, когда name имеет значение null?
capitalize вызовет неопределенный метод для nil :: Class, если self [: name ] возвращает nil.
Следующее покрывает это:
def name
self[:name] ? self[:name].capitalize : nil
end
Но я согласен, что вы должны создать форматированный метод и оставить метод имени как есть. Никогда не знаешь, когда тебе могут понадобиться необработанные данные.
К вашему сведению: причина, по которой ваш метод не сработал, заключалась в том, что он вызывал, как я люблю называть, цикл саморекламы. Вы переопределяете метод, но вызываете метод в новом методе. Таким образом, вы должны использовать self [: name]
или read_attribute
для доступа к внутренним данным модели.
Попробуйте следующее:
def name
self[:name].capitalize
end