2017-09-11 2 views
1

Je suis nouveau du développement de ruby ​​et de Web, j'ai cherché beaucoup pour ce problème mais je n'ai pas encore compris.Appels AJAX dans Ruby: erreur 404

J'ai un bouton :

<button type="button" class="btn btn-primary" onclick="add()">Add</button> 

qui appellent une fonction AJAX :

<script> 

function add() { 
    $.ajax({ 
     type : "get", 
     url : "civil_defence_alerts/checkError", 
     data: null, 
     success: function (data) { 
      alert(data); 
     } 

     } 

    ) 
} 
</script> 

Dans mon "civil_defence_alerts_controller" i défini une méthode nommée check_error:

def check_error 

    #Some code... 

end 

Maintenant, quand je clique sur le bouton l'appel ajax échoue parce que ne peut pas trouver la méthode check_error (erreur 404), j'ai essayé différentes configurations routes.rb ... Il me rend fou!

Merci les gars, et désolé pour mon anglais: D

EDIT, mon routes.rb:

MyApp::Application.routes.draw do 

    mount Ckeditor::Engine => '/ckeditor' 
    get 'site/index' 

    apipie 
    mount Browserlog::Engine => '/logs' 
    get "home/index" 

    devise_for(:users, :controllers => { 
     :passwords => 'password'}) 

    devise_for(:admins, 
     controllers: {registrations: 'admins/registrations'}) 


    match 'admin', to: "admin/municipalities#index", via: [:get, :post] 
    resources :calendars 
    resources :garbage 
    resources :news, only: :show 
    resources :events, only: :show 
    resources :municipalities 
    resources :editable_strings 
    get 'misc/password_reset' 

    namespace :admin do 
    get 'superadmin_dashboard/index' 
    get 'superadmin_dashboard/activities' 
    get 'superadmin_dashboard/issues' 

    root to: 'dashboard#index' 

    resources :push_notifications, only: [:index, :show] 
    resources :rss_importer_logs, only: [:index, :show] 
    resources :poi_importer_logs, only: [:index, :show] 
    resources :features do 
    resources :strategies 
    end 
    resources :api_call_logs, only: [:index, :show] 
    require 'sidekiq/web' 
    require 'sidekiq/cron/web' 
    # require 'sidetiq/web' 
    authenticate :admin do 
    mount Sidekiq::Web => '/workers' 
    end 
    get 'dashboard/index' 

    get 'misc/test_notification' 
    post 'misc/test_notification_send' 
    resources :documents 
    resources :frontends, except: [:show, :destroy] 
    resources :operators 
    resources :users, only: [:index, :show, :destroy] 
    resources :municipalities do 
    resources :attachments do 
    collection do 
     get 'tinymce' 
     post 'tinymce' 
    end 
    end 
    get 'dashboard/index' 
    post 'dashboard/more_information' 

    collection do 
    get 'activate_municipality' 
    post 'activate' 

    end 
    member do 
    get 'suspend' 
    get 'reactivate' 
    end 
    resources :admins do 
    member do 
     get 'log' 
     get 'logs' 
    end 
    end 
    resources :calendar_types 
    resources :calendars do 
    resources :garbage_category_rules 
    member do 
     get 'manage' 
     get 'occurrences' 
     get 'download' 
    end 
    end 



    resources :civil_defence_alerts do 
    collection do 
     post 'update_alert' 
     post 'add_alert' 
     get 'get_alerts' 
    end 
    end 
    resources :civil_defence_phone_numbers 
    resources :civil_defence_informations 

    resources :documents 
    resources :events do 
    member do 
     get 'push_modal' 
     post 'push' 
    end 
    end 
    resources :event_categories, except: [:show] 
    resources :ckan_resources, except: [:show] do 
    resources :ckan_resource_logs, only: [:index] 
    member do 
     get 'run' 
    end 
    end 
    resources :garbage 
    resources :garbage_categories 
    resources :garbage_collections 
    resources :issues do 
    resources :issue_comments 
    resources :issue_emails 
    collection do 
     get 'export' 
    end 
    member do 
     delete 'really_delete' 
     get 'restore' 
     get 'unlink' 
    end 
    end 
    resources :issue_statistics, only: [:index] 
    resources :logs, :only => [:index, :show] 
    resources :menus, :only => [] do 
    resources :menu_items do 
     collection do 
     post 'update_order' 
     end 
    end 
    end 
    resources :municipality_services, except: [:show] 
    resources :site_menus, :only => [] do 
    resources :site_menu_items do 
     collection do 
     post 'update_order' 
     end 
    end 
    end 
    resources :municipality_sections, :only => [:index, :edit, :update] 
    resources :municipality_settings, :only => [:index, :edit, :update] 
    resources :news do 
    member do 
     get 'push_modal' 
     post 'push' 
    end 
    collection do 
     get 'update_from_feed' 
    end 
    end 
    resources :issue_categories 
    resources :news_categories 
    resources :point_of_interests 
    resources :point_of_interest_categories 
    resources :point_of_interest_categorie_with_childrens 
    resources :pages do 
    collection do 
     post 'update_order' 
    end 
    end 
    resources :site_pages do 
    collection do 
     post 'update_order' 
    end 
    end 
    resources :recycling_areas 
    resources :site_blocks do 
    collection do 
     post 'update_order' 
     post 'set_preferences' 
    end 
    end 
    resources :site_header_images do 
    collection do 
     post 'update_order' 
    end 
    end 
    resources :site_settings, :only => [:index, :edit, :update] do 
    collection do 
     get 'remove_site_logo' 
    end 
    end 
    resources :sponsors 
    resources :subdomains 
    resources :surveys 
    resources :tags, only: [:index] 
    resources :zones 
end 

resources :calendar_type_icons 
resources :garbage_category_icons 
resources :point_of_interest_category_icons 

resources :provinces, only: [:index, :edit, :update] 
resources :regions, only: [:index, :edit, :update] 
end 

# API Access 


    namespace :api, :defaults => {:format => 'json'} do 
    scope "(:frontend)", frontend: /site|tourism|municipium/, defaults: 
    {frontend: 'municipium'} do 
    api_version(:module => "v1", :path => {:value => "v1"}, :defaults => 
    {:format => "json"}, :default => true) do 
     devise_for(:users, :controllers => {:sessions => 
    "api/v1/sessions", 
             :registrations => 
    "api/v1/registrations"}) 
    resources :calendar_types, :only => [:index] 
    resources :calendars, :only => [:index, :show] do 
     collection do 
     get 'last_update' 
     end 
     member do 
     get 'last_update' 
     end 
    end 
    resources :devices, :only => [:index, :show] do 
     collection do 
     post 'remove' 
     post 'add' 
     post 'replace' 
     get 'count' 
     post 'update' 
     end 
    end 

    resources :garbage_categories, :only => [:index, :show] do 
     collection do 
     get 'last_update' 
     end 
    end 
    resources :garbage_collections, :only => [:index] 

    resources :garbage_subscriptions, :only => [:index] do 
     collection do 
     post 'remove' 
     post 'add' 
     end 
    end 
    resources :events, :only => [:index, :show] 
    resources :event_categories, :only => [:index, :show] 
    resources :issues 
    resources :issue_categories, :only => [:index] 

    resources :municipalities, :only => [:index, :show] 
    resources :municipality_subscriptions, :only => [:index] do 
     collection do 
     post 'add' 
     post 'remove' 
     post 'set_as_primary' 
     end 

    end 
    resources :news_categories, :only => [:index, :show] 
    resources :news_subscriptions, :only => [:index] do 
     collection do 
     post 'remove' 
     post 'add' 
     end 
    end 
    resources :news, :only => [:index, :show] 
    resources :pages, :only => [:index, :show] 
    resources :point_of_interest_categorie_with_childrens 
    resources :point_of_interest_categories, :only => [:index] do 
     resources :point_of_interests, :only => [:index, :show] 
    end 
    resources :point_of_interests, :only => [:index, :show] 
    resources :recycling_areas, :only => [:index, :show] 
    resources :user_profile, :only => [:index, :show] do 
     collection do 
     post 'destroy_user' 
     post 'reset_password' 
     post 'update_details' 
     post 'get_details' 
     post 'meta_login' 
     post 'change_password' 
     post 'facebook_login' 
     post 'remove' 
     end 
    end 
    resources :sponsors, only: [:index, :show], defaults: {format: 'json'} 
    resources :surveys do 
     member do 
     get 'get_questions' 
     post 'vote' 
     end 
    end 
    resources :zones, :only => [:index, :show] 
    end 
    api_version(:module => "v2", :path => {:value => "v2"}, :defaults => {:format => "json"}) do 
    devise_for(:users, :controllers => {:sessions => "api/v2/sessions", 
             :registrations => "api/v2/registrations"}) 
    resources :admins, only: [:index] do 
     collection do 
     post 'auth' 
     end 
    end 
    resources :calendars, :only => [:index, :show] do 
     collection do 
     get 'last_update' 
     end 
     member do 
     get 'last_update' 
     end 
    end 
    resources :civil_defence_alerts, only: [:index] 
    resources :civil_defence_informations, only: [:index, :show] 
    resources :civil_defence_levels, only: [:index, :show] 
    resources :civil_defence_phone_numbers, only: [:index] 
    resources :devices, :only => [:index, :show] do 
     collection do 
     get 'remove' 
     post 'remove' 
     post 'add' 
     post 'replace' 
     get 'count' 
     post 'update' 
     post 'device_cleanup' 
     end 
    end 
    resources :garbages, :only => [:index] do 
     collection do 
     get 'last_update' 
     end 
    end 
    resources :garbage_categories, :only => [:index, :show] do 
     collection do 
     get 'last_update' 
     end 
    end 
    resources :garbage_collections, :only => [:index] 

    resources :garbage_subscriptions, :only => [:index, :update] do 
     collection do 
     post 'remove' 
     get 'remove' 
     post 'add' 
     end 
    end 
    resources :events, :only => [:index, :show] 
    resources :event_categories, :only => [:index, :show] do 
     resources :events, only: [:index, :show] 
    end 
    resources :issues do 
     collection do 
     get 'migrate' 
     end 
    end 
    resources :issue_categories, :only => [:index] 
    resources :tags, :only => [:index] 
    resources :issue_statistics, :only => [:index] 
    resources :menus, only: [:index, :show] 
    resources :site_menus, only: [:index, :show] 
    resources :municipalities, :only => [:index, :show] do 
     collection do 
     get 'find_by_subdomain' 
     end 
    end 
    resources :municipality_services, only: [:index] 
    resources :municipality_subscriptions, :only => [:index] do 
     collection do 
     post 'add' 
     post 'remove' 
     post 'set_as_primary' 
     end 

    end 
    resources :news_categories, :only => [:index, :show] do 
     resources :news, only: [:index, :show] 
    end 
    resources :news_subscriptions, :only => [:index] do 
     collection do 
     post 'remove' 
     post 'add' 
     end 
    end 
    resources :news, :only => [:index, :show] 
    resources :pages, :only => [:index, :show] 
    resources :site_pages, :only => [:index, :show] 
    resources :point_of_interest_categorie_with_childrens 
    resources :point_of_interest_categories, :only => [:index] do 
     resources :point_of_interests, :only => [:index, :show] 
    end 
    resources :point_of_interests, :only => [:index, :show] 
    resources :public_offices, only: [:index] 
    resources :recycling_areas, :only => [:index, :show] 
    resources :site_blocks, only: [:index, :show] 
    resources :site_header_images, only: [:index] 
    resources :searches, only: [] do 
     collection do 
     post 'search' 
     get 'search' 
     end 
    end 
    resources :user_profile, :only => [:index, :show] do 
     collection do 
     post 'destroy_user' 
     post 'reset_password' 
     post 'update_details' 
     post 'get_details' 
     post 'meta_login' 
     post 'change_password' 
     post 'social_login' 
     post 'remove' 
     post 'update_access' 
     end 
    end 
    resources :sponsors, only: [:index, :show], defaults: {format: 'json'} 
    resources :surveys do 
     member do 
     get 'get_questions' 
     post 'vote' 
     end 
     collection do 
     get 'migrate' 
     end 
    end 
    end 
end 

    end 
end 
+0

S'il vous plaît Montrez vos routes.rb. – fangxing

+0

Pouvez-vous également ajouter votre code de route? – Stuart

+0

j'ai ajouté mes routes.rb! – Leonardo

Répondre

4

Ajouter l'itinéraire correspondant à votre méthode check_error:

resources :civil_defence_alerts do 
    collection do 
    ... 
    get 'check_error' 
    end 
end 

Et dans votre requête, vous devez passer l'URI d'itinéraire correspondant (comme vous l'avez défini dans l'option url de votre fonction ajax), quelque chose li ke:

function add() { 
    $.ajax({ 
    url: 'civil_defence_alerts/check_error', 
    success: function (data) { 
     alert(data) 
    } 
    }) 
} 

Notez que si la requête est GET, vous n'avez pas besoin de la spécifier.

+0

Oh merci, ça semble marcher !!!!! Une autre question, comment je dois faire si je veux passer un objet personnalisé de la vue au contrôleur? – Leonardo

+0

Cela dépend du type de requête que vous allez utiliser, si POST est alors dans l'option 'data' de votre méthode ajax, si c'est GET, alors il peut être ajouté dans l'url. –