Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RubyonRails jquery未调用正确的控制器操作_Javascript_Jquery_Ruby On Rails_Routes - Fatal编程技术网

Javascript RubyonRails jquery未调用正确的控制器操作

Javascript 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

当我开始发布这个问题时,我阅读了所有弹出的答案,但它们似乎并没有解决我的问题

除了通过脚手架创建的操作外,我还向我的控制器添加了一个名为get_results的新操作,但每次我更改选择菜单中的选项时,它都会指示我编辑操作,而不是get_results

这是js

<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 => ....