【问题标题】:404 error when making an ajax call to controller from view in rails for dynamic drop down select从 Rails 中的视图对控制器进行 ajax 调用以进行动态下拉选择时出现 404 错误
【发布时间】:2014-10-31 02:16:55
【问题描述】:

我正在尝试动态填充选择列表,当我对控制器进行 ajax 调用时出现 404 错误。我环顾四周,但找不到我收到此错误的原因。

我要调用的方法所在的控制器。

class UsersController < ApplicationController
    def index
        #@users = User.all
        myList = [["A",1],["B"],2]
        @classList = myList
        render "index.html.erb"
    end
.  
.
. 
    def changeclasses
        @classlist = [["B",2]]
    end
end

这是我的观点

<%= form_for UnoClass.new do |f| %>
Department: <%= select_tag(:city_id, options_for_select([['Accounting',  'ACCT'], 2),
{ id: 'departSelect'}) %>
<br />
Course : <%= select_tag(:course, options_for_select(@classList)) %>
<br />
Section : <%= f.text_area :section %>
<br />
<%= f.text_area :sessionId, value: request.session_options[:id], style: "display:none;" %>
<%= f.submit %>
<% end %>

<script>
    $(document).ready(function() {
        $('#departSelect').change(function() {
            $.ajax({
               url : "/changeclasses"
            });
        });
    }); 
</script>

还有我的路线.rb

Rails.application.routes.draw do
  resources :uno_classes

  resources :users 
  root :to => 'users#index'
  get '/changeclasses' => "users#changeclasses"

这是我从 chrome 上的开发者工具中获取的错误。

GET http://localhost:3000/changeclasses 404 (Not Found) 

所以,当我对上面的选择框 departSelect 进行更改时,它会调用 changeclasses 但找不到它。

此外,当我对路线进行 rake 时,会显示正确的路线。

 changeclasses GET    /changeclasses(.:format)        users#changeclasses

我还没有实现该方法,但它应该更改@classList 并因此更改课程选择框的内容,并且由于 404 错误它永远不会被调用。

任何帮助将不胜感激,因为我无法弄清楚这里为什么会出现问题。

【问题讨论】:

    标签: ruby-on-rails ruby ajax select routes


    【解决方案1】:

    以下是一些关于您可以尝试使其发挥作用的想法。

    首先。在你的用户视图文件夹中创建一个名为“changeclasses.js.erb”的视图,这是 Rails 默认加载的视图,除非你另有说明,因为它是一个 js 请求。您可以/应该也将您想要使用此特定方法运行的 js 放入该文件 (changeclasses.js.erb)。

    第二。尝试将 ajax 调用的数据类型更新为“脚本”,以便控制器将其作为 js 进行处理。

            $.ajax({
               url : "/changeclasses",
               dataType: "script"
            });
    

    第三。如果所有这些都不能解决它,我会将以下代码添加到您的控制器中,以确保它响应 js 请求。

    class UsersController < ApplicationController
      respond_to :js
    

    希望其中之一有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2020-11-28
      • 2013-06-25
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2016-04-14
      相关资源
      最近更新 更多