使用 Rails.ajax 和 jquery 可排序插件时的 ActionView::MissingTemplate
Posted
技术标签:
【中文标题】使用 Rails.ajax 和 jquery 可排序插件时的 ActionView::MissingTemplate【英文标题】:ActionView::MissingTemplate when using Rails.ajax and jquery sortable plugin 【发布时间】:2018-07-06 15:43:49 【问题描述】:我在 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
视图分布在不同的部分,我只是在这里包含了相关的部分:
主.sortable
div:
<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>
来自上述sn-p的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>
需要明确的是,我可以拖放内容,只是不能让新职位在数据库中持久存在。每当我拖动任何东西时都会出现上述错误(尽管我的应用程序一直在工作 - 错误仅在控制台上,而不是在浏览器上)。
【问题讨论】:
【参考方案1】:好的,不知道发生了什么,但它似乎已经修复了。
很奇怪,因为我在测试时重启了我的 Rails 服务器几次,甚至关闭了我的电脑并在第二天再次尝试,但没有成功。
它现在才有效,我很困惑。不管怎样,我想我可以结束这个问题。
【讨论】:
以上是关于使用 Rails.ajax 和 jquery 可排序插件时的 ActionView::MissingTemplate的主要内容,如果未能解决你的问题,请参考以下文章
Rails - Ajax 与不显眼的 javascript Jquery UI 进度条