【发布时间】:2019-10-01 15:51:48
【问题描述】:
我正在尝试通过表单将 <div contenteditable="true"> 的内容保存到我的 Rails 应用程序的数据库中,以便用户保存和更新。
设置如下:
用户获得一个视图(即 /posts/1),其中包含 <div> 和 contenteditable= "true"。正如Can div with contenteditable=true be passed through form? 中所建议的那样,我添加了 javacript 来给我一个“保存”按钮和一个隐藏字段,该字段将捕获 div 的内容以进行保存。然后将其更改为遵循同一问题中的建议。
<%= form_for @post do |form| %>
<%= form.hidden_field :content %>
<%= form.submit "Save" %>
<% end %>
<div id="content" contenteditable="true">
<p>Hello</p>
</div>
<script>
document.getElementById('content').addEventListener('input', function(ev){
document.getElementById('post_content').value = ev.target.innerHTML;
})
</script>
我正在寻找的行为是此表单,一旦我按下“保存”,将 <div id="content"> 的所有内容保存到 @post.content
我已在posts_controller.rb 中将:content 添加到我的post_params 中
def post_params
params.require(:post).permit(:user_id, :content)
end
但它不起作用。 @post.content 一如既往地保持 nil 不变。
服务器日志显示参数 :content 正在发送,但为空!
Started PATCH "/posts/3" for ::1 at 2019-10-01 19:36:24 +0200
Processing by PostsController#update as HTML
Parameters: {"authenticity_token"=>"SRzcfcrBWOCdaWeJkp6rCRw94Ex2XLuVvnc3Bt1dFP1JFz36NCNTcxcuOVqzymlIGq9sveaE/+OkDnaHv3kJNQ==", "post"=>{"content"=>""}, "commit"=>"Save", "id"=>"3"}
任何猜测我做错了什么?提前致谢
【问题讨论】:
标签: javascript html ruby-on-rails