在我的一个项目,代码:
= link_to "add", new_me_category_path, class: "btn btn-success", remote: true
可以正确加载远程形式。
但有些人可以不工作,浏览器没有执行responese js代码。 我需要添加“数据:{类型:‘脚本’}”是这样的:
= link_to "add", new_me_category_path, class: "btn btn-success", remote: true, data: {type: "script"}
我想知道原因。
我不是JS专家,我不知道红宝石,但我认为:
当数据类型设置为script
-下载的代码加载并立即执行。
当数据类型是默认值( html
) -下载的代码只是加载到浏览器中。 你必须为“手动”执行它(通过调用例如某些功能)。
如果您的代码只是为了与以前加载代码中使用的一些功能-这些功能将可用,并且将工作(当数据类型是html
)。
如果定义在你的代码的事件 - 他们不会工作,因为他们不会被初始化,监守没有执行代码。
如果我的解释是坏的-你可以阅读有关之间的差异jQuery.get()
和jQuery.getScript()
方法。
在幕后,jQuery的ajax
方法用于: http://api.jquery.com/jquery.ajax/由UJS https://github.com/rails/jquery-ujs每当data-remote="true"
的属性链接设置,这是做remote: true
。
如文档中所述,Ajax的确定HTTP接受头中发送并解释根据该返回值dataType
和accepts
传递到参数ajax()
在这里被从所拍摄的data-
通过UJS锚的属性。
如果没有dataType
是通过设置data-type
属性,jQuery的推论的请求和响应类型“智能”。 这可以解释不一致的,如果你没有明确指定它。
如果您加载脚本正确的模板应该有.ejs
扩展(或呈现原始脚本是这样的: render js: 'some code'
)。 您必须使用转义HTML j
在这样EJS模板:
template.ejs
$('some selector').html('<%= j render('some template') %>');
请你也给我的网址。 正确的应该结束.js
。