代码之家  ›  专栏  ›  技术社区  ›  Robbie

带轨道的new.ajaxRequest中的动态路径

  •  0
  • Robbie  · 技术社区  · 14 年前

    我想知道是否有办法通过RubyonRails将“动态路径”导入.js文件。

    例如,我有以下内容:

    new Ajax.Request('/tokens/destroy/' + GRID_ID, {asynchronous:true, evalScripts:true, onComplete:function(request){load('26', 'table1', request.responseText)}, parameters:'token=' + dsrc.id + '&authenticity_token=' + encodeURIComponent(AUTH_TOKEN)})
    

    主URL是“/tokens/destroy/:id”,但是在我的生产服务器上,此应用程序作为子文件夹运行。因此,此Ajax调用的URL必须是“/qrpsdrail/tokens/destroy/:id”

    从中调用的URL /网格/1或/qrpsdrail/grids/1

    当然,我可以这样做../。/path——但这似乎有点刻薄。它还依赖于路由永不改变,这在这个阶段我不能保证。 我只是想看看这个问题还有什么其他的解决办法。

    事先谢谢:)

    3 回复  |  直到 13 年前
        1
  •  1
  •   nathanvda    14 年前

    也许有点黑客的解决方案,但我有一个像描述的配置文件 here 所以你可以在 config.yml :

    development:
      root: /
    
    production:
      root: /qrpsdrail/
    

    当你建立你的AjaxRequest,你可以写

    new Ajax.Request("#{AppConfig.root}tokens/destroy/' + ...
    

    但看起来仍然应该有一个更清洁的方法来解决这个问题;)

        2
  •  0
  •   Salil    14 年前

    可以在new.ajaxrequest中使用动态路径,在rails中使用javascript

    JavaScript

     function dynamic_ajax(GRID_ID)
      {
          new Ajax.Request("/tokens/destroy?"+GRID_ID, {asynchronous:true, evalScripts:true, onComplete:function(request){load('26', 'table1', request.responseText)}, parameters:'token=' + dsrc.id + '&authenticity_token=' + encodeURIComponent(AUTH_TOKEN)});
      }
    

    HTML

    <a href="javascript:void(0)" onclick="dynamic_ajax('1')">Grid Id 1 </a>
    <a href="javascript:void(0)" onclick="dynamic_ajax('2')">Grid Id 2 </a>
    <a href="javascript:void(0)" onclick="dynamic_ajax('3')">Grid Id 3 </a>
    
        3
  •  0
  •   Joel Friedlaender    14 年前

    可以将路径设置为启动Ajax调用的HTML对象的属性。例如:

    HTML

    <a id='my_clicky_thing' href='#' rails_path='<%= tokens_destroy_path %>'>Click me</a>
    

    JQuery

    $('#my_clicky_thing').live('click', function(){
      var ajax_path = $(this).attr('rails_path');
      /* Do ajax stuff here with the path */
    });
    

    这将允许您像在视图中那样使用.js文件中的实际Rails路径。

    (此代码可能不起作用,仅用于概念)