Ruby on Rails 路由前缀,而不是在 .erb.js 文件中进行预处理

Ruby on Rails routes prefixes not pre-processing in .erb.js file

本文关键字:文件 js erb 预处理 路由 Rails on 前缀 Ruby      更新时间:2023-09-26

我正在使用Rails 4。我有以下文件:

// apps/assets/javascripts/products.js.erb
var getColoursAndMaterialsData = function(onSuccess)
{
    var fd = formdata();
    $.post( '<%= data_products_path(:format => :json) %>', fd )
    .done(function(data)
    {
        onSuccess(data);
    });
};

当 products.js.erb 包含在 .html.erb 文件中时,我收到错误:

undefined method `data_products_path'

显然,路由前缀"data_products_path"未被预处理。我的印象是,给产品.js.erb扩展名会哄骗预处理器。

在 .html.erb 文件中的 <script type="text/javascript"></script> 标记之间,相同的代码有效。我的routes.rb的相关部分如下所示:

resources :products do
    collection do     
        post 'data'
    end
end

我还需要做什么吗?

我认为

仅通过添加扩展名.erb它不起作用。 为什么不做一个简单的jQuery ajax post请求...

使用

dataType: "json" 确保获得 JSON 响应,而不是使用 URL 帮助程序,只需指定 URL。

http://api.jquery.com/jquery.post/

下面的链接回答了您的问题

在 JavaScript 资产中使用 Rails 帮助程序方法