Опитвайки се да разбера Railscast епизод 197 (свързан с предишна публикация: #17094200)

Опитвам се да направя това да работи за моята страница, но трябва да разбера замяната на регулярния израз. Може ли някой да разбие това за мен?

function add_fields(link, association, content) {
    var new_id = new Date().getTime();
    var regexp = new RegExp("new_" + association, "g")
    $(link).parent().before(content.replace(regexp, new_id));
}

Разбирам първия ред (var new_id = ...) и защо е необходим, но какво прави вторият ред и как работи замяната на id?

Питам, защото в моето приложение, когато щракна върху „add_new_row“, новият ред се вмъква в горната част на моята страница, а не в таблицата, където му е мястото.

Благодаря за всяка помощ, която можете да предложите.


person user1904869    schedule 14.06.2013    source източник


Отговори (1)


Линията

    var regexp = new RegExp("new_" + association, "g")

просто създава RegExp обект, който представлява съответстващ модел. (Вътрешно той „компилира“ модела, така че, например, ако се съпоставяше многократно, той щеше да направи всичко необходимо само веднъж, предварително, така че следващите употреби да са по-ефективни.) "g" е флаг, означаващ "глобален", което означава "Замени всички съвпадения." Не съм сигурен какво е association, но този модел ще съответства на "new_<association>".

Следващият ред

$(link).parent().before(content.replace(regexp, new_id));

използва шаблона: замени всички екземпляри на горния шаблон с генерирания и уникален, базиран на дата и час идентификатор. И накрая, съдържанието се поставя пред всички негови братски възли чрез before.

person slackwing    schedule 14.06.2013
comment
Благодаря ти Андрю - това помага. Променливата за асоцииране е името на моя подмодел - например може да имам модел за поръчки, който може да има много редови позиции - в този случай асоциацията ще бъде низ, съдържащ името LineItems. Трябваше също да променя следващия ред на този: - person user1904869; 17.06.2013
comment
$(.DataRow).after(content.replace(regexp, new_id)); Това поставя вмъкнатия ред след последния ми ред с данни. Сега тази част работи както възнамерявах. Все още трябва да разработя някаква функционалност на релсите, за да направя това да работи, когато потребителят кликне върху връзката, а не когато страницата се зареди. - person user1904869; 17.06.2013