我正在使用 rails,但是在application.js
.
不幸的是,这使得引用 URL 变得非常困难。例如,如果我想给一个字段自动完成行为,我必须硬编码自动完成 URL,application.js
因为 railsurl_for
不可用。
可以application.js
用erb吗?我在想这个错误的方式吗?
我正在使用 rails,但是在application.js
.
不幸的是,这使得引用 URL 变得非常困难。例如,如果我想给一个字段自动完成行为,我必须硬编码自动完成 URL,application.js
因为 railsurl_for
不可用。
可以application.js
用erb吗?我在想这个错误的方式吗?
如果您不介意可能无法通过验证器的标记,则可以将 url 添加到表单或表单字段的属性中,然后使用 jQuery 获取该属性。
看起来 Rails 3.0 可能会使用 HTML5 自定义数据属性的 javascript 助手沿着这条路线走:DHH @ Railsconf 09
是的,有可能,在当前的 rails 版本上,只需调用您的文件application.js.erb
;在旧版本上,您可以自己滚动或抓取类似的东西。
不要这样做application.js.erb
,即使涉及缓存,这也不是一个好习惯。使您的自动完成端点(您从中获取数据的 url)与表单的操作 url 相同。在你application.js
只是附加&ac=1
到它并让你的控制器理解它。
您不必对其进行硬编码 - 只需创建一个添加自动完成侦听器并接受自动完成参数的 JS 函数,然后从模板中调用该 JS 函数:
(为清楚起见简化了代码)
应用程序.js:
function add_autocomplete(id, url) {
$("#" + id).autocomplete(
source: url
);
};
application_helper.rb:
def add_autocomplete(id, url)
render :text => "<script> add_autocomplete('#{id}', '#{url}');</script>"
end
ERb 模板:
<input id="i_want_autocomplete" />
<%= add_autocomplete("i_want_autocomplete", items_js_path() %>