我试图通过javascript持久化进行更改。
具体来说,我有一个rails应用程序,允许用户喜欢"喜欢"其他用户'帖子。当用户喜欢(收藏)帖子或创建新的favorite
时,我希望使用javascript和/或jQuery更改帖子的背景颜色(例如,改为green
)(I看不到任何其他方式这样做)。问题是,当我重新加载页面时,更改不是持久的,背景颜色变为默认值。
我尝试了以下方法,但都没有效果;
addClass
与removeClass
append
<style> ... </style>
代码,因此样式的更改可能会持续存在,但不会成功。
我已经在app/views/favorites/create.js.erb
中直接在视图模板中尝试了上述操作,其中使用<script> ... </script>
标记显示了已删除的帖子。
任何建议都将不胜感激。
答案 0 :(得分:2)
要使数据持久化,您需要将其存储在数据库中。您可以发出ajax请求并将like
事务保存在db中。成功的ajax请求后,您可以使用addClass
或removeClass
修改元素。这些更改将在重新加载时丢失。
根据db中保存的值,您需要在前端分配类。您必须在erb
文件中编写相同的元素修改。
<div class=<%= liked?(post, current_user) ? 'liked-class' : 'not-liked-class' %>>
</div>
你需要这样的东西。上面的代码只是一个例子。您需要编写liked?
辅助方法逻辑,类名等。