kis*_*ore 30 javascript routes ruby-on-rails
任何人都可以解释我如何在javascript中访问rails路由/名称路由?
以下是我尝试过的一些内容 http://github.com/jsierles/js_named_routes.
但没有运气.
Bog*_*iev 40
我正在研究这个问题一段时间,并没有发现任何与Rails 3兼容的实现.
所以决定写我自己的:
https://github.com/railsware/js-routes
小智 22
kishore我认为这是最简单的方式,只需调用:
Rails.application.routes.url_helpers.*_路径
所以,如果你有你的routes.rb,那么让我们说:
资源:用户
那么你想从一个javascript文件调用索引操作,你做:
$.get('<%= Rails.application.routes.url_helpers.users_path %>', function(data){ ...
Run Code Online (Sandbox Code Playgroud)
考虑到js文件应该有.erb扩展名(或*.js.erb),因此rails知道必须预处理.否则,该文件将按原样提供.
如果我正确理解您的要求,您希望视图中的Javascript代码可以访问指定的路由.如果是这样,那么一种简单的方法是通过模板(ERB,Haml等)呈现您的Javascript代码,然后展开类似以下内容的路由:
ERB:
<script>
$.get('<%= some_named_route_path %>', function(data) {
});
</script>
Run Code Online (Sandbox Code Playgroud)
哈姆尔:
:javascript
$.get('#{ some_named_route_path }', function(data) {
});
Run Code Online (Sandbox Code Playgroud)
更新:为public/javascripts/
案例添加建议
从公共文件夹访问命名路由有点棘手,但至少有两种方式可以想到,这两种方式都不是完全令人满意的,但其中一种或哪一种可能适合您的应用程序
lib/javascripts
使用名为like的ERB 创建javascript模板,'*.js.erb'
并在部署之前将rake
这些模板扩展为public/javascript
s(例如,作为Capistrano配方中的一个步骤).缺点是,在扩展模板之前,您的更改不会在网站上实时显示,并且您可能无法通过.erb
扩展文件获得正确的语法突出显示javascriptcontent_for :head
块中创建每视图javascript帮助函数,扩展命名路由并使其可用于公共javascript文件中的代码.如果你对命名空间和约定小心,这可能会很好.缺点是调用这些javascript帮助程序的代码与定义它们的代码分离,这可能会使维护者感到困惑或容易被滥用.在某些观点中:
<% content_for :head do %>
<script>
SomeNameSpace.helper_to_some_named_route = function() {
return '%<= some_named_route_path %>
};
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后在public/application.js
(说)
$.get(SomeNameSpace.helper_to_some_named_route(), function(data) {
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26555 次 |
最近记录: |