使用Rails,ajax将id参数发送给json

时间:2016-07-09 23:41:26

标签: ruby-on-rails ajax

我有这个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文件中。当有人加载页面时它会被激活

2 个答案:

答案 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的页面上设置隐藏变量,也可以将其设为数据属性。