我正在尝试将 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/