Rails 6:Ajax 不接受 js.erb 中的渲染

Posted

技术标签:

【中文标题】Rails 6:Ajax 不接受 js.erb 中的渲染【英文标题】:Rails 6: Ajax not accepting render in js.erb 【发布时间】:2020-08-29 06:40:17 【问题描述】:

我正在尝试使用 AJAX 显示 SHOW 操作的结果。

在 show.js.erb 中,正确呈现:

$('#someid').html("<p>regular html</p>")

这会呈现所选@category 的名称

$('#someid').html("<%= j render @categories %>")

但在尝试渲染关联的 SHOW 视图 (show.html.erb) 时不起作用:

$('#someid').html("<%= j render 'show', category: @category %>")

我收到的错误如下:

ActionView::Template::Error (Missing partial categories/_show with :locale=>[:en], :formats=>[:js, :html, :text, :css, :ics, :csv, :vcf, :vtt, :png, :jpeg, :gif, :bmp, :tiff, :svg, :mpeg, :mp3, :ogg, :m4a, :webm, :mp4, :otf, :ttf, :woff, :woff2, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip, :gzip], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]. Searched in:
  * "/home/ubuntu/environment/project_name/app/views"
  * "/home/ubuntu/.rvm/gems/ruby-2.6.3/gems/actiontext-6.0.3/app/views"
  * "/home/ubuntu/.rvm/gems/ruby-2.6.3/gems/actionmailbox-6.0.3/app/views"
):
    1: $('#someid').html("<%= j render 'show', category: @category %>")
  
app/views/categories/show.js.erb:1

如何渲染 show.html.erb?

【问题讨论】:

你有什么错误? 我用收到的浏览器控制台错误更新了我的问题 查看“网络”选项卡上的响应。它认为有完整的错误跟踪 GET 500 错误意味着您的 Rails 服务器返回了 500 - Internal Server Error。检查运行服务器的日志或终端。请添加堆栈跟踪和与问题相关的其他代码。我的猜测是您的显示视图中的某些内容引发了未捕获的异常。 是的,我查看了错误的错误,而查看正确的错误帮助我解决了问题。谢谢!! 【参考方案1】:

你应该改变文件夹show.html.erb -> _show.html.erb 因为它是模板部分渲染

【讨论】:

【参考方案2】:

代表 OP 回答:

最后的问题是show.html.erb 需要命名 _show.html.erb

我查看的是浏览器错误,而不是 rails 服务器错误。一世 仍然发布错误,以记录我的解决过程。

我能够在错误的这一行中看到这一点

ActionView::Template::Error (Missing partial categories/_show with :locale=>[:en], .......

show.html.erb 之前有下划线,不是立即 第一次使用 AJAX 对我来说很明显。

【讨论】:

以上是关于Rails 6:Ajax 不接受 js.erb 中的渲染的主要内容,如果未能解决你的问题,请参考以下文章

Rails update.js.erb 不执行 javascript

Rails Ajax:.js.erb 呈现为文本,而不是 JS

在 Rails 3 中处理 JS/ERB 模板中的 JSON

js.erb 不在 Rails 6 中渲染

在 rails create controller (Rails 6) 中渲染 new.js.erb

Bootstrap 4 和 Rails 6:$(...).modal 不是“.js.erb”文件中的函数(但适用于其他 .js 文件?)[关闭]