rails在javascript url中添加对象

rails add object in javascript url

本文关键字:添加 对象 url javascript rails      更新时间:2023-09-26

我在js文件上使用这个函数,它可以在上工作

 $(function() {

$("#badgebutton").click(function() {
    var assertions = [
        "http://www.exemple.com/patents/5555/badge.json"
    ];
    OpenBadges.issue(assertions, function(errors, successes) {
        console.log("callback called");
        console.log("Errors:", errors);
        console.log("Successes:", successes);
    });
});
});

代替编号:

"http://www.exemple.com/patents/5555/badge.json"

我想使用这个专利。我试过这个:

"http://www.exemple.com/patents/#{@patent.id}/badge.json"

以及其他一些解决方案,但没有成功。。

尝试这样做:

"http://www.exemple.com/patents/<%= @patent.id %>/badge.json"

但是,当您在routes.rb文件中定义Rails生成的路由助手方法时,建议使用它们。例如:

<%= badge_patents_path(@patent, :format => :json) %>

您应该使用js上下文将专利id(或者更好的是整个url)传递到js文件,这可以通过以下几种方式完成:

  1. 使用全局变量:

在你的部分(erb):

<script type="text/javascript">
  window.patent_url = "http://www.exemple.com/patents/#{@patent.id}/badge.json"
</script>

然后使用JS文件中的全局patent_url变量。

  1. 重做你的JS文件来封装JS逻辑,但要接收这样的适当参数

它可能看起来像这样:

window.badgebutton_handler = function(url) {
  OpenBadges.issue(url, function(errors, successes) {
    console.log("callback called");
    console.log("Errors:", errors);
    console.log("Successes:", successes);
  });
}

并在erb文件中绑定这样的处理程序:

<script type="text/javascript">
  $("#badgebutton").click(function() {
    badgebutton_handler("http://www.exemple.com/patents/#{@patent.id}/badge.json");
  });
</script>

问题是,您应该将变量或url传递到您拥有它的地方,这就是ERB模板文件。