javascript - 为什么我的页面在发表评论后没有重新加载视图?
问题描述
在创建 reddit 克隆时学习 ruby on rails,当我尝试发表评论时,我的控制台返回评论已创建但它没有重新加载页面视图并且它返回一个错误说
Uncaught TypeError: Cannot set property 'innerHTML' of null
at <anonymous>:3:52
at processResponse (rails-ujs.js:283)
at rails-ujs.js:196
at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.js:264)
创建.js.erb:
document.getElementById("post-comments").innerHTML = "<%= escape_javascript(render partial: 'posts/comments', locals: {comments: @comments})%>"
评论控制器:
class CommentsController < ApplicationController
def create
@comment = Comment.new comment_params
@comment.account_id = current_account.id
respond_to do |format|
format.js {
if @comment.save
@comments = Comment.where(post_id: @comment.post_id)
render "comments/create"
else
# unable to save
end
}
end
end
def comment_params
params.require(:comment).permit(:message, :post_id)
end
end
解决方案
你做了一个选择器拼写错误,所以comment/create.js.erb
像这样改变,这应该可以工作:
document.getElementById("post_comments").innerHTML = "<%= escape_javascript(render partial: 'posts/comments', locals: {comments: @comments})%>"
document.querySelector("#new_comment textarea").value = ""
这里的区别post_comments
是post-comments
推荐阅读
- ruby-on-rails - 将 ruby 版本从 1.9.3 升级到 2.0.0 时 rspec 失败
- algorithm - 跳转搜索算法:伪代码错误
- php - 根据产品 ID 向 WooCommerce“我的帐户”订单添加操作按钮
- python - pyspark,通过别名按数组特定属性分组
- excel - 获取 Office.js excel 中更改的单元格“valueBefore”
- git - 是否可以在没有本地仓库的情况下将一些文件附加到远程仓库?
- sql-server - 在变量中查找一个单词并渲染 1 else 0
- android - 谷歌地图或一些自定义地图反应原生
- excel - 如何将标题限制在我的工作簿中?
- css - 使用 Angular CLI 动态加载 CSS