我有这个ajax调用,它正在激活控制器中的一个动作。我的问题是该操作没有收到该控制器中其他方法所具有的params [:id]。我猜这是因为它从网址获取了参数。但是如何使用ajax发送当前页面ID?
$.ajax({
url: "/test",
type: "GET",
dataType: "json",
success: function(data) {
console.log(data);
},
error: function() {
console.log("Ajax error!")
}
});
控制器:
def test
@user = User.find(params[:id])
render :json => { :name => @user.username }.to_json
end
注意:ajax位于视图中不在的.js文件中。当有人加载页面时它会被激活
答案 0 :(得分:0)
您可能希望在html中将当前页面ID添加为隐藏值。例如,在example/current_view.html.erb
中,添加此行的任何位置:
<%= hidden_field_tag :current_id, params[:id] %>
稍后,您可以在ajax请求中访问该值,并使用jquery将其添加到url:
$.ajax({
url: "/test/" + $('#current_id').val(),
type: "GET",
...
});
如果您不想修改当前视图,则可以使用javascript解析网址(位于window.location.href
),并使用正则表达式提取ID。
答案 1 :(得分:0)
您没有向服务器发送任何data
。详细信息请参考jquery ajax文档http://api.jquery.com/jquery.ajax/
您可以在存储id
的页面上设置隐藏变量,也可以将其设为数据属性。