jquery - AJAX 到 Ruby Controller

标签 jquery ruby-on-rails ruby ajax

我正在尝试通过此方式使用来自 ajax 的 Controller 操作:

var idDocumento = $(this).attr('id');
    $.ajax({
        type: "POST",
        dataType: "json",
        cache: false,
        url: "%=  document_download_create_company_company_document_path(company_id:params[:id], id: %>" + idDocumento + ""<%, :format => :js ) %>",
                        success: function(data){
                            alert(data);
                        }
                    });         

                });

到这个 Controller :

  def document_download_create

    end

我需要从 ajax 调用中获取 Controller 中的参数,并在 MediaDownload 中进行插入。我已经添加了路由`document_download_create_company_company_document_path。 所以我的问题是,我应该如何获取 Controller 操作的参数,以及如何正确发送它,因为我在 :

"<%=  document_download_create_company_company_document_path(company_id:params[:id], id: %>" + idDocumento + ""<%, :format => :js ) %>" 

说的是

syntax error, unexpected ')'

提前致谢。

最佳答案

你的问题在这里:

<%= document_download_create_company_company_document_path(company_id:params[:id], id: %>

Erb 在执行 javascript 之前被解析。更重要的是,它完全不知道 idDocumento 代表什么——对于 erb 它只是一个文本。简而言之 - 您不能将 javascript 值传递给 erb block 。不过有一个解决办法:

var idDocumento = $(this).attr('id');
var pathTemplate = "<%=document_download_create_company_company_document_path(company_id: params[:id], id: :idDocumento, format: js) %>"
var path = pathTemplate.replace('idDocumento', idDocumento)

解释:

因为在执行 erb 时您不知道 idDocumento,所以您用符号 :idDocumento 对它进行 stub 。这将使 erb 呈现:

var pathTemplate = "path/to/document/with/id/idDocumento/download"

因此,您的 js 需要做的就是用此时已知的值替换此 idDocumento 字符串。

关于jquery - AJAX 到 Ruby Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338220/

相关文章:

ruby-on-rails - 将 NTLM Active Directory 用户数据检索到 Rails,无需 IIS

ios - 从 ruby​​ on Rails 应用程序发送文件以在后台打印

ruby - 如何从 Ruby 中调用 Windows DLL?

Ruby 统计 gem

jquery - 如何使移动菜单转换为 "backwards"?

javascript - 我的带有数组的 javascript 脚本有问题

ruby-on-rails - Rails : Single page website, 如何组织 Controller / View 等

jQuery - 从 HTML 字符串中获取 HTML

javascript - 使用 jQuery 偏移来定位 <div>,但看起来位置增加了

ruby-on-rails - 如何配置 capistrano 在一台服务器上部署 puma 和 nginx,并在另一台服务器上部署 resque?