在Rails中,如何从Jquery传递参数到控制器方法,然后获取返回的值?

时间:2015-10-24 15:34:19

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

在Rails4中,我在控制器中有一个名为get_values_from_models的方法,它采用参数id

应用程序/控制器/ bugs_controller.rb

def get_values_from_models(id)
  @online_bugs = Bugs.where(bug_id: id)
  @devlopers = Devs.where(dev_role_id: 2)
end

我想在Jquery函数show_bug_detail中将此方法称为 ,这是部分视图:

应用程序/视图/错误/ _get_values.html.erb

var id =5;
function show_bug_detail(id) {
  //call method get_values_from_models, pass parameters 'id'
  //get @online_bugs and @developers instances from returned.
  }

这可能吗?怎么做? 我一直在寻找可能的解决方案,但没有任何财富,如果有人能为我提供任何解决方案,我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:3)

现在请注意,出于示例目的,我已将路线创建为集合。但是,由于这确实是对资源本身的一个动作,因此创建一个成员会更有意义。也许你应该看一下?这将创建一个像/ bugs /:id / get_values_from_models

的路线

我自己没有测试以下代码,但这是基本的想法。

为它创建一条路线,让我们说:

(另请参阅导轨指南以供参考:http://guides.rubyonrails.org/routing.html#resources-on-the-web

resources :bugs do
  get get_values_from_models, on: :collection
end

我不知道你的功能何时被触发,但是什么时候你可以输入以下代码来获取ajax get的结果。

另请参阅jQuery API以供参考: http://api.jquery.com/jQuery.get/

$.get("bugs/get_values_from_models", {id: your_id}, function(data){
  // do something with your data received if everything went ok.
  // notice that you'll have to return json from your controller.
}, "json");

制作你的方法" get_values_from_models"可访问(所以不私有)。删除id作为参数。所以像这样:

def get_values_from_models
  # when called you should receive a params[:id]
  id = params[:id]

  @online_bugs = Bugs.where(bug_id: id)
  @developers = Devs.where(dev_role_id: 2)

  # now return the results you'd like
  render json: {online_bugs: @online_bugs, developers: @developers}
end