javascript - 从 ajax 调用将参数传递到 Rails 后端

标签 javascript ruby-on-rails ajax reactjs

我正在尝试将 API 路由传递给 Rails,以便服务器而不是客户端执行调用。当我尝试执行此操作时,出现 404 not found。当我将此路由传递给该方法时,它可以从控制台中找到。但不是来自 ajax 调用。这是我的 Controller 方法:

    def identification
       @link = params[:link]
       @response = MotorClient.new.response_from_path(@link)
       render json: @response
    end

这是我的路线:

    get '/identification/:link', to: 'vehicles#identification', on: :collection

这是我的ajax:

    handleRoute: function (e) {
    this.handleChange(e);
    e.preventDefault();
    var options = e.target.options;
    var route = "";
    for (var i = 0, l = options.length; i < l; i++) {
        if (options[i].selected) {
            route = (options[i].dataset.route);
            console.log(route)
            $.ajax({
                type: 'get',
                url: '/vehicles/identification/',
                dataType: 'json',
                data: {"link":encodeURIComponent(route)},
                success: function (data) {
                    this.props.getMakes(data);
                }.bind(this),
            })
        }
    }
},

当我console.log路线时,我得到正确的字符串,如“/v1/Information/YMME/Years/2012/Makes/56/Models”,就像我从rails控制台所说的那样,它可以工作,但我不能正确获取参数这是我通过 ajax 调用时在 javascript 控制台上得到的结果:

     GET http://localhost:3000/vehicles/identification/?link=%252Fv1%252FInformation%252FYMME%252FYears%252F2012%252FMakes 404 (Not Found)

我做错了什么?

最佳答案

看起来您的路由期望 link 是 URL 路径中的一段,而不是查询字符串变量:/identification/:link -- 尝试删除/:link 或在向服务器发出 AJAX 回调时将编码的链接附加到 URL 末尾。

关于javascript - 从 ajax 调用将参数传递到 Rails 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364331/

相关文章:

php - Jquery ajax 无 PHP 响应

javascript - onClick 添加参数到 url

javascript - 我的 Javascript 代码有问题

javascript - 有没有办法让 div 扩展以覆盖所有可用空间,隐藏它扩展到的所有内容?

javascript - 模型属性段和注释是否应该在模型层中?

ruby-on-rails - 如何让 cucumber 显示完整的(rails)错误信息?

ruby-on-rails - 我正在尝试优化我的 ruby​​ else if 语句

javascript - javascript中多个输入的一个输出

javascript - Axios 和 Fetch 都会导致 CORS 错误,但 Postman 不会

javascript - 用户离开页面时如何发送ajax请求