67566


Ruby on Railsで初めてアプリを作っている初学者です。ajax通信ができず困っています。  
jQueryを使って下記の通り作成しました。発火は起きていますが、controllerへ送られていないような感じです。  
解決策見つからず、ご教示のほど、お願いいたします。

search.js

[code]

    $(function() {
      var search_list = $("contents.row");
      function appendCompany(company) {
      $(".search-form").on("submit", function() {
        var input = $(".search-input").val();
        console.log(input);
        $.ajax( {
          type: 'get',
          url: '/searches',
          data: { keyword: input },
          dataType: 'json'
        })
        .done(function(companies) {
         })
        .fail(function() {
          console.log("失敗です");
        });
      });
    });
    
[/code]

searches_controller.rb

[code]

      def search
        @companies = Company.where("name LIKE ?", "%#{params[:keyword]}%")
        respond_to do |format|
          format.html
          format.json
        end
      end
    
[/code]

index.html.erb

[code]

        <div class="search-form">
          <%= form_tag search_user_searches_path(current_user), :method => 'get' do %>
            <%= text_field_tag :keyword, "", placeholder: "投稿を検索する", class: "search-input" %>
            <%= submit_tag 'Search', class: 'search_btn' %>
          <% end %>
        </div>
    
[/code]

rails routes

[code]

                      Prefix Verb   URI Pattern                               Controller#Action
            new_user_session GET    /users/sign_in(.:format)                  devise/sessions#new
                user_session POST   /users/sign_in(.:format)                  devise/sessions#create
        destroy_user_session DELETE /users/sign_out(.:format)                 devise/sessions#destroy
           new_user_password GET    /users/password/new(.:format)             devise/passwords#new
          edit_user_password GET    /users/password/edit(.:format)            devise/passwords#edit
               user_password PATCH  /users/password(.:format)                 devise/passwords#update
                             PUT    /users/password(.:format)                 devise/passwords#update
                             POST   /users/password(.:format)                 devise/passwords#create
    cancel_user_registration GET    /users/cancel(.:format)                   devise/registrations#cancel
       new_user_registration GET    /users/sign_up(.:format)                  devise/registrations#new
      edit_user_registration GET    /users/edit(.:format)                     devise/registrations#edit
           user_registration PATCH  /users(.:format)                          devise/registrations#update
                             PUT    /users(.:format)                          devise/registrations#update
                             DELETE /users(.:format)                          devise/registrations#destroy
                             POST   /users(.:format)                          devise/registrations#create
                        root GET    /                                         searches#index
              user_companies GET    /users/:user_id/companies(.:format)       companies#index
         edit_user_companies GET    /users/:user_id/companies/edit(.:format)  companies#edit
                             PATCH  /users/:user_id/companies(.:format)       companies#update
                             PUT    /users/:user_id/companies(.:format)       companies#update
                  user_items GET    /users/:user_id/items(.:format)           items#index
        search_user_searches GET    /users/:user_id/searches/search(.:format) searches#search
               user_searches GET    /users/:user_id/searches(.:format)        searches#index
                             POST   /users/:user_id/searches(.:format)        searches#create
             new_user_search GET    /users/:user_id/searches/new(.:format)    searches#new
                   edit_user GET    /users/:id/edit(.:format)                 users#edit
                        user PATCH  /users/:id(.:format)                      users#update
                             PUT    /users/:id(.:format)                      users#update
    
[/code]


CC BY-SA 4.0
2020-06-12T02:55:32.030
67563
2020-06-12T03:28:46.603
40583
question
ruby-on-rails jquery ajax
ajax通信がうまくいきません。


`url: '/searches'`  
が route に存在してないですね  
`url: $(this).attr('action')`  
にしないといけないのでは？

あと普通 rails で ajax するときは form に remote: true ってつけるだけで勝手に ajax になります  
js のビューを書くことで JSON 受取処理も書く必要がなく直接 ajax の結果を JS として実行できるので便利です


CC BY-SA 4.0
2020-06-12T03:28:46.603
67566
2020-06-12T03:28:46.603
67563
answer