我第一次使用AJAX并且遇到了以下问题
我有说明,下面我有按钮字段,我可以输入新的说明,点击按钮后我想用AJAX刷新描述。
//_description.html.erb
<div class="description-field">
<%= @description.text %>
</div>
在更新中的控制器中,我设置了format.js
//update.js.erb
$('.description-field').replaceWith("<%= @description.text %>");
和
//_description.html.erb
<%= simple_form_for @description, remote: true do |f| %>
<%= f.input :text %>
<%= f.button :submit %>
<% end %>
但不幸的是,它仅刷新一次描述,当我第二次单击按钮没有变化时,我不得不刷新网站以查看新文本。 有人可以帮我解决吗?
答案 0 :(得分:1)
这是因为.replacewith
替换了整个html元素,而不仅仅是它包含的内容。将$('.description-field').replaceWith("<%= @description.text %>");
更改为$('.description-field').html("<%= escape_javascript @description.text %>");
同样使用escape_javascript
,因为我只是为了安全。