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
视图分布在不同的部分,我只是在此处包含了相关位:
主要.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>
上述片段中的 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 服务器几次,甚至关闭了我的电脑并在第二天再次尝试,但没有成功。
它现在可以用了,我很困惑。不管怎样,我想我可以结束这个问题了。
我在 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>
上述片段中的 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 服务器几次,甚至关闭了我的电脑并在第二天再次尝试,但没有成功。
它现在可以用了,我很困惑。不管怎样,我想我可以结束这个问题了。