###開発環境
rails
jQuery
###解決したいこと
検索フォームの入力した値をajaxで送り、返ってきた値がundefinedになる。
jQueryでajax通信をし、controllerを通じてjbuilderへ送っています。
doneの中の返ってきた値がconsole.logで中身を見ると、undefinedになっていており、どうかご教授のほどお願い致します。
###確認したこと
jsonの通信は成功しております。(ログで確認済み➕doneのconsole.logが反応している)
検索キーワードがcontrollerに届いている。(binding.pryで中身を確認済み)
#####search.js
javascript
1$(function(){ 2 $(".search-word").on("keyup", function(){ 3 let input = $(".search-word").val(); 4 $.ajax({ 5 type: "GET", 6 url: "/users", 7 data: {keyword: "input"}, 8 dataType: "json" 9 }) 10 11 .done(function(users) { 12 $(".show-users").empty(); 13 console.log(users); 14 }) 15 .fail(function() { 16 alert("通信エラーです。ユーザーが表示できません。"); 17 }); 18 }); 19});
######user_controller.rb
ruby
1def index 2 return nil if params[:keyword] == "" 3 @users = User.where(['username LIKE ?', "%#{params[:keyword]}%"] ).where.not(id: current_user.id) 4 respond_to do |format| 5 format.html 6 format.json 7 end 8 end
######index.json.jbuilder
json.array! @users do |user| json.name user.username json.email user.email json.firstname user.first_name json.lastname user.last_name end
######index.html.erb
<%= form_with(url: users_path, local: true, method: :get, id: "form3") do |form| %> <%= form.text_field :keyword, placeholder: "投稿を検索する", class: "search-word" %> <%= form.submit "検索", id: "sbtn3" %> <% end %>