我正在尝试在 Rails 应用程序中发出 ajax post 请求。但我在响应中收到错误。
Rails 代码:-
def search_exams(myparam1 , myparam2)
json_data = {:aaData=> [["abc","xyz","lmnop"],["sdf","adsdf","sadfsd"],["sdf","adsdf","sadfsd"]]}.to_json
respond_to do |format|
format.json { render :json => json_data }
end
end
脚本代码:-
<%= javascript_tag "window._token = '#{form_authenticity_token}'" %>
<script>
$.ajax({
url:'/home/search_exams',
type:'POST',
dataType:'json',
data:{
myparam1: "First Param value",
myparam2: "Second param value",
authenticity_token: window._token
},
success:function(data){
debugger;
},
error:function(data){
debugger;
}
});
</script>
我收到此错误:-
“HomeController#search_exams 中的 ArgumentError 参数数量错误(0 为 2)Rails.root:C:/Users/........”
最佳答案
def search_exams
从方法中删除参数。
当您将带有参数的请求传递给 Rails Controller 时,中间件堆栈会将它们放入 params
哈希中,因此您将得到:
params[:param1]
params[:params2]
--
您还需要考虑使您的 JS unobtrusive :
#app/assets/javascripts/application.js
$(document).on("action", ".element", function(){
$.ajax({
url:'/home/search_exams',
type:'POST',
dataType:'json',
data:{
myparam1: "First Param value",
myparam2: "Second param value",
authenticity_token: window._token
},
success:function(data){
debugger;
},
error:function(data){
debugger;
}
});
});
关于Rails 中带参数的 Jquery Ajax POST 请求 (Ruby on Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33671134/