

下記のページをそれぞれ参考にRails 5.2.4.3でのAjaxの実装を試みていますが、  
ログをみるとHTMLになっており反応していなさそうです。

**参考にしたページ**  
[【Rails】remote: trueでサクッと画面切り替え ](http://song-of-
life.hatenablog.com/entry/2017/09/30/234356)  
[form_forをremote: trueでAjax実装](https://kurose.me/form_for_ajax/)  
[【Rails初心者】Ajaxの実装方法を理解する(非同期通信) -
Qiita](https://qiita.com/rio_threehouse/items/b067d64eafdfbd25b91d)

どの記事をみても、まずは `form_with` などに `remote: true`
を加える必要があるそうなのですが動きません。動かないというよりはボタンをクリックしてもHTML遷移してしまいます。  
これはどのようなことが原因と考えられるでしょうか？

[code]

    <div id="samplRemote">
    <%= form_with(model: @hashtag, url: users_path, method: :get, local: true, remote: true) do |f| %>
            <%= f.submit 'RandomTag', class: 'btn btn-primary btn-sm' %>    
            <!--<div>-->
                <button class="clipboard-btn" data-clipboard-action="copy" data-clipboard-target="#bar">
                    Copy
                </button>
            <!--</div>-->
    
            <%= f.label :"Set Number" %>
            <%= f.select :hashtags, 1.upto(30).map{|i| [i, i]}, class:"form-control" %><br>
    <% end %>
    
[/code]

追記  
ありがとうございます。  
確かにlocal: trueを削除するとJSに切り替わったようです。  
ですがボタンクリックしても作動しません。  
これはコントローラー側のコードが悪いのでしょうか？  
ここを参考にしながら書きました。  
<https://www.sejuku.net/blog/28967>  
<http://song-of-life.hatenablog.com/entry/2017/09/30/234356>

UsersController

[code]

    class UsersController < ApplicationController
      before_action :require_user_logged_in, only: [:index, :show]
    
      def index
        if logged_in?
          @hashtag = current_user.hashtags.build  # form_with 用
          @hashtags = current_user.hashtags.order(id: :desc).page(params[:page])
          if params[:hashtag].nil?
            @randomtags = Hashtag.order("RAND()").limit(28)
            # Ajax
              respond_to do |format|
                format.html
                format.js
              end
            # Ajax
          else
            @randomtags = Hashtag.order("RAND()").limit(params[:hashtag][:hashtags])
            # Ajax
              respond_to do |format|
                format.html
                format.js
              end
            # Ajax
          end
        end
      end
    
[/code]

ビューファイルです。  
パーシャルへレンダーしています。  
index.js.erb

[code]

    $('#samplRemote').html("<%= escape_javascript(render 'randomtags') %>");
    
[/code]

index.html.erb

[code]

    <div id="samplRemote">
            <%= form_with(model: @hashtag, url: users_path, method: :get, remote: true) do |f| %>
                    <%= f.submit 'RandomTag', class: 'btn1 btn-primary btn-sm' %>    
                    <!--<div>-->
                        <button class="clipboard-btn btn1 btn-primary btn-sm" data-clipboard-action="copy" data-clipboard-target="#bar">
                            Copy
                        </button>
                    <!--</div>-->
                    <div class = "setnumber">
                    <%= f.label :"Set Number" %>
                    </div>
                    <%= f.select :hashtags, 1.upto(30).map{|i| [i, i]}, class:"form-control" %><br>
            <% end %>
    
                    <!-- Target -->
                    <div class="box2" id="bar">
                        <p><%= render 'randomtags/randomtags', randomtags: @randomtags %></p>
                    </div>
                    <!-- Trigger -->
    </div>  
    
[/code]


CC BY-SA 4.0
2020-06-09T07:10:52.187
67448
2020-06-09T13:25:09.520
2020-06-09T13:25:09.520
39719
39719
question
ruby-on-rails ajax
Rails 5.2.4.3でAjaxの実装ができない