我有以下代码。
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
仍然不好。
有什么想法吗?
答案 0 :(得分:1)
这是HAML吗?
=add_skill_link("Add Skill", form, "resume_#{id}_skills")
如果是这样,您需要阻止HAML转义输出:
!=add_skill_link("Add Skill", form, "resume_#{id}_skills")
答案 1 :(得分:0)
我发现事情变得太乱了,最后我从Ryan Bates示例应用程序得到了我的解决方案,他有一个关于嵌套模型的railscast,在那里我浏览了分支,我得到了一个分支,有一个很好的干净解决方案来解决这个问题。 link text