У меня есть следующий код.
def add_resume_link(name, form)
link_to_function name do |page|
html = form.fields_for :resumes, @general_resume.resumes.build, :child_index => 'NEW_RECORD' do |form_parent|
render :partial => 'resume_form', :locals=>{:form=>form_parent}
end
page << "$('resumes').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, id) });"
end
end
А на resume_form
у меня есть где-то:
=add_skill_link("Add Skill", form, "resume_#{id}_skills")
и функция выглядит так:
def add_skill_link(name, form, id)
link_to_function name do |page|
html = form.fields_for :skill_items, @general_resume.skill_items.build, :child_index => 'NEW_RECORD' do |form_parent|
render :partial=>'skill_form', :locals=>{:form=>form_parent, :parent=>id}
end
page << "$('#{id}').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, new Date().getTime()) });"
end
end
Итак, в основном у меня есть код JavaScript, который динамически добавляет фрагмент HTML (add_resume
) и содержит другой код JavaScript, который динамически добавляет поле выбора на страницу.
Моя проблема в том, что add_skill_link
работает нормально, если я использую со стороны сервера, я имею в виду рендеринг со стороны сервера. И получает двойное экранирование при использовании в верхнем описанном способе.
Я пытался удалить escape_javascript
из бита add_skill_link
, но это не очень хорошо.
Есть идеи?