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
在 rails create controller (Rails 6) 中渲染 new.js.erb
Bootstrap 4 和 Rails 6:$(...).modal 不是“.js.erb”文件中的函数(但适用于其他 .js 文件?)[关闭]