ActionView::MissingTemplate 使用 Rails.ajax 和 jquery 可排序插件时

ActionView::MissingTemplate when using Rails.ajax and jquery sortable plugin

我在 Go Rails 上关注 this episode 以将 jquery ui 可排序插件添加到我的应用程序(主要是添加拖放功能)。

在 ajax 请求之前一切正常。即使那样,它也会启动 patch 请求,但甚至从未到达控制器操作(数据库上没有任何更改,我放在操作顶部的 binding.pry 也没有被触发).

这是我得到的错误:

Started PATCH "/contents/sort" for 127.0.0.1 at 2018-01-27 17:03:43 +0530
Processing by ContentsController#sort as */*
  Parameters: {"content"=>["13", "4"]}
Completed 500 Internal Server Error in 29ms (ActiveRecord: 0.0ms)


ActionView::MissingTemplate (Missing template contents/sort, 
application/sort with {:locale=>[:en], :formats=>[:js, :html], 
:variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, 
:coffee, :jbuilder]}. Searched in:
  * "/mnt/c/Users/mumar/Documents/Code/Frontier/newsletter-app/app/views"
  * "/home/Umar/.rvm/gems/ruby-2.4.0/gems/devise-4.3.0/app/views"
):

这是我的 CoffeeScript 文件的摘录:

document.addEventListener 'turbolinks:load', ->
  $('.sortable').sortable 
    handle: '.handle'
    update: (e, ui) ->
      Rails.ajax
        url: $(this).data("url")
        type: "PATCH"
        data: $(this).sortable 'serialize'
      return
  return

这是控制器操作

def sort
  binding.pry
  params[:content].each_with_index do |id, index|
    Content.where(id: id).update_all(position: index + 1)
  end

  head :ok
end

视图分布在不同的部分,我只是在此处包含了相关位:

主要.sortablediv:

<div class="sortable list-group" data-url="<%= sort_contents_path %>">
  <% section.contents.each do |content| %>
    <% if (content.edition == @edition) && (content.top_story == false) %>
      <%= render partial: 'shared/content', locals: {content: content} %>
    <% end %>
  <% end %>
</div>

上述片段中的 shared/content 部分:

<div class="card-content list-group-item" id="<%= dom_id(content) %>">
  <h5 class="card-subtitle mb-2 text-muted">
    <%= content.heading %> 

    <%= link_to fa_icon('star', 'aria-hidden': 'true', 
      style:top_story_status_color(content)), toggle_top_content_path(content), 
      set_tooltip('Top Story') %>

    <span class="handle" data-toggle="tooltip" data-placement="bottom" title="Move Article">
      <%= fa_icon('arrows', 'aria-hidden': 'true', style: 'color: #a1a1a3;') %>      
    </span>
    </h5>
  <p class="card-text"><%= content.body %></p>
  <span>
    Read More: <%= link_to content.link, content.link, class: "content-link" %>  
  </span>
</div>

需要说明的是,我可以拖放内容,只是无法让新位置持久保存在数据库中。每当我拖动任何东西时我都会收到上述错误(尽管我的应用程序继续工作 - 错误只出现在控制台上,而不是浏览器上)。

好的,不确定发生了什么,但它似乎已经自行修复了。

很奇怪,因为我在测试时重启了我的 rails 服务器几次,甚至关闭了我的电脑并在第二天再次尝试,但没有成功。

它现在可以用了,我很困惑。不管怎样,我想我可以结束这个问题了。