Javascript RubyonRails jquery未调用正确的控制器操作
当我开始发布这个问题时,我阅读了所有弹出的答案,但它们似乎并没有解决我的问题 除了通过脚手架创建的操作外,我还向我的控制器添加了一个名为get_results的新操作,但每次我更改选择菜单中的选项时,它都会指示我编辑操作,而不是get_results 这是jsJavascript RubyonRails jquery未调用正确的控制器操作,javascript,jquery,ruby-on-rails,routes,Javascript,Jquery,Ruby On Rails,Routes,当我开始发布这个问题时,我阅读了所有弹出的答案,但它们似乎并没有解决我的问题 除了通过脚手架创建的操作外,我还向我的控制器添加了一个名为get_results的新操作,但每次我更改选择菜单中的选项时,它都会指示我编辑操作,而不是get_results 这是js <script type="text/JavaScript"> $(function(){ $('.menu_class').bind('change', function(){ $.ajax('#{:cont
<script type="text/JavaScript">
$(function(){
$('.menu_class').bind('change', function(){
$.ajax('#{:controller => "my_tests", :action => "get_results"}?param_one=' + $(this).val());
});
});
</script>
我在我的routes.rb中添加了它的特定路线
MyTests::Application.routes.draw do
resources :my_tests
get "home/index"
match '/my_tests/get_results' => 'my_tests#get_results', :as => :get_results
match ':controller(/:action(/:id(.:format)))'
root :to => 'home#index'
end
编辑:这是为我工作的路由配置,感谢Robin的以下回答:
<script type="text/JavaScript">
$(function(){
$('.menu_class').bind('change', function(){
$.ajax({
url: "<%= get_results_my_tests_url %>",
data: {
param_one: $(this).val()
}
});
});
});
</script>
resources :my_tests do
collection do
get :get_results
end
end
rake routes给了我这个
my_tests GET /my_tests(.:format) {:action=>"index", :controller=>"my_tests"}
POST /my_tests(.:format) {:action=>"create", :controller=>"my_tests"}
new_my_test GET /my_tests/new(.:format) {:action=>"new", :controller=>"my_tests"}
edit_my_test GET /my_tests/:id/edit(.:format) {:action=>"edit", :controller=>"my_tests"}
my_test GET /my_tests/:id(.:format) {:action=>"show", :controller=>"my_tests"}
PUT /my_tests/:id(.:format) {:action=>"update", :controller=>"my_tests"}
DELETE /my_tests/:id(.:format) {:action=>"destroy", :controller=>"my_tests"}
home_index GET /home/index(.:format) {:action=>"index", :controller=>"home"}
get_results /my_tests/get_results(.:format) {:action=>"get_results", :controller=>"my_tests"}
/:controller(/:action(/:id(.:format)))
root / {:action=>"index", :controller=>"home"}
那么为什么它总是指示我编辑操作而不获取结果呢?试试这个:
您的javascript应该是
<script type="text/JavaScript">
$(function(){
$('.menu_class').bind('change', function(){
$.ajax({
url: "<%= get_results_my_tests_url %>",
data: {
param_one: $(this).val()
}
});
});
});
</script>
试试这个:
您的javascript应该是
<script type="text/JavaScript">
$(function(){
$('.menu_class').bind('change', function(){
$.ajax({
url: "<%= get_results_my_tests_url %>",
data: {
param_one: $(this).val()
}
});
});
});
</script>
由于该代码段中没有ERB,因此上面的内容在JS中只是一个普通字符串。它将构造一个url,如:
http://example.com/the_current_page#{:controller => "my_tests", :action => ....
而URL后面的部分将不会发送到服务器。在网络面板中查看一下,应该清楚发生了什么
由于该代码段中没有ERB,因此上面的内容在JS中只是一个普通字符串。它将构造一个url,如:
http://example.com/the_current_page#{:controller => "my_tests", :action => ....
而URL后面的部分将不会发送到服务器。在网络面板中查看一下,应该可以清楚地知道发生了什么。是否没有任何错误?我希望它尝试使用get_results作为ID,因为您的匹配在资源路由之后。你为什么不添加RESTful操作?另外,请用适当的rails版本tag.Nope标记问题。如果我将浏览器指向my_tests/get_results,则我会发现此错误无法找到id=get_results的MyTest这是我在服务器上看到的跟踪,在Sun Jan 01 15:20:54-0800 2012由MyTestsController以/Parameters:{id=>11}为127.0.0.1启动get/my_tests/11/edit处理MyTest Load 0.4ms从my_测试中选择my_测试。*,其中my_测试.id=?LIMIT 1[[id,11]]Rendered my_tests/_form.html.erb 9824.6ms Rendered my_tests/edit.html.erb in layouts/application 9828.1ms在9847ms视图中完成200 OK:9843.4ms | ActiveRecord:0.9ms请参见,这是相同的问题。当你遇到错误时,你应该把它包括在问题中。@Dave:谢谢你的指点。我把它改成了参考资料:我的测试确实得到了‘get_results’,:on=>:collection end并对匹配行进行了注释,但仍然没有运气-用当前代码更新问题。你修复了JS吗?没有任何错误吗?我希望它尝试使用get_results作为ID,因为您的匹配在资源路由之后。你为什么不添加RESTful操作?另外,请用适当的rails版本tag.Nope标记问题。如果我将浏览器指向my_tests/get_results,则我会发现此错误无法找到id=get_results的MyTest这是我在服务器上看到的跟踪,在Sun Jan 01 15:20:54-0800 2012由MyTestsController以/Parameters:{id=>11}为127.0.0.1启动get/my_tests/11/edit处理MyTest Load 0.4ms从my_测试中选择my_测试。*,其中my_测试.id=?LIMIT 1[[id,11]]Rendered my_tests/_form.html.erb 9824.6ms Rendered my_tests/edit.html.erb in layouts/application 9828.1ms在9847ms视图中完成200 OK:9843.4ms | ActiveRecord:0.9ms请参见,这是相同的问题。当你遇到错误时,你应该把它包括在问题中。@Dave:谢谢你的指点。我把它改成了参考资料:我的测试确实得到了‘get_results’,:on=>:collection end并对匹配行进行了注释,但仍然没有运气-用当前代码更新问题。你修好JS了吗?谢谢罗宾。你救了我一天!在我修复了js代码url中的一个小语法错误后,您的建议非常有效:my_测试而不是测试,url的末尾有一个,一个:lineary实际上,您还修复了我的另一个问题;如果你回信给汉克斯·罗宾,我可以相信你。你救了我一天!在我修复了js代码url中的一个小语法错误后,您的建议非常有效:my_测试而不是测试,url的末尾有一个,一个:lineary实际上,您还修复了我的另一个问题;如果你回信的话,我可以相信你
http://example.com/the_current_page#{:controller => "my_tests", :action => ....