无法通过rails中的ajax调用控制器方法

时间:2014-03-29 09:15:22

标签: jquery ruby-on-rails ajax ruby-on-rails-4

我已经尝试了所有的谷歌搜索技巧,但我还无法找到问题的解决方案。

我正在尝试使用ajax从jquery向controller方法发送参数。调用方法后,它将呈现其各自的视图页面。但它甚至没有进入ajax代码来调用控制器方法(通过检查)。我想我正在做一些非常愚蠢的事情,但无法弄明白,请帮助我。

我的控制器方法代码:

def profile 
@prof = User.where(:id => params[:id])
end

我的.js文件

$(document).ready(function(){
    $('.table tr').click(function(){
      $.ajax({
          url: "users/profile",
          type: "POST",
          data: {id: $(this).attr('id')},
          success: function (data) {
          alert(data);
      }
  });
});
    });

我的路线档案:

 resources :users, :only => [:new, :create, :index,:profile]
  match 'users/profile' => 'users#profile', :as => :profile

2 个答案:

答案 0 :(得分:1)

在routes.rb

中尝试此操作
resources :users, :only => [:new, :create, :index]
get 'users/profile/:id' => 'users#profile', :as => :profile

并改变你的js方法:

$(document).ready(function(){
    $('.table tr').click(function(){
      $.ajax({
          url: "/users/profile/" + $(this).attr('id'),
          type: "GET",
          success: function (data) {
              alert(data);
          }
      });
    });
  });

你的方法应序列化为json,如下所示:

def profile 
  @prof = User.where(:id => params[:id])
  respond_to do |format|
    format.json  { render :json => @proof }
  end
end

答案 1 :(得分:0)

更改你的js方法:

$(document).ready(function(){
    $('.tr_class').click(function(){
      $.ajax({
          url: "/users/profile?id="+$(this).attr('id'),
          type: "GET",
          success: function (data) {
             alert(data);
          }
      });
    });
  });

你的方法应序列化为json,如下所示:

def profile 
  @prof = User.where(:id => params[:id])
  respond_to do |format|
    format.json  { render :json => @proof }
  end
end