13

我正在使用 rails,但是在application.js.

不幸的是,这使得引用 URL 变得非常困难。例如,如果我想给一个字段自动完成行为,我必须硬编码自动完成 URL,application.js因为 railsurl_for不可用。

可以application.js用erb吗?我在想这个错误的方式吗?

4

4 回答 4

6

如果您不介意可能无法通过验证器的标记,则可以将 url 添加到表单或表单字段的属性中,然后使用 jQuery 获取该属性。

看起来 Rails 3.0 可能会使用 HTML5 自定义数据属性的 javascript 助手沿着这条路线走:DHH @ Railsconf 09

于 2009-05-15T23:55:55.633 回答
2

是的,有可能,在当前的 rails 版本上,只需调用您的文件application.js.erb;在旧版本上,您可以自己滚动或抓取类似的东西

于 2009-04-07T16:20:54.227 回答
2

不要这样做application.js.erb,即使涉及缓存,这也不是一个好习惯。使您的自动完成端点(您从中获取数据的 url)与表单的操作 url 相同。在你application.js只是附加&ac=1到它并让你的控制器理解它。

于 2009-05-13T14:41:40.177 回答
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() %>
于 2010-03-11T14:16:46.910 回答