在Rails4中,我在控制器中有一个名为get_values_from_models
的方法,它采用参数id
:
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
中将此方法称为 ,这是部分视图:
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.
}
这可能吗?怎么做? 我一直在寻找可能的解决方案,但没有任何财富,如果有人能为我提供任何解决方案,我将不胜感激,谢谢。
答案 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