我在尝试做一些我认为相当简单的事情时遇到了很多麻烦.
我有一个项目列表,比方说,todos.在该列表的底部,我有一个文本字段,我在其中添加新项目到该列表.我想这样做,以便新项目动态地添加到该列表的底部,而无需像聊天窗口那样刷新整个页面.
我将提交表单设置为remote:true并且它成功提交而不重新加载页面,但我不能同时将新项目显示在列表的底部.我必须刷新页面才能看到更改.
我尝试了一些我在SO上找到的不同方法(这里不乏类似的问题)和网络,甚至是一个名为Sync的宝石,但每个都有自己的错误和问题,我无法工作正常.他们每个人都可能是自己的SO问题.所以我要问:是否有一个“配方”肯定会在Rails 4中成功实现这一点?
解决方法
让我们说,现在你有一个用户表单提交,
<%=form_for @user,remote: true%><%end%>
你还有一个控制器,
UsersController
在你的控制器中,你有一个功能,
def create #something end
这是形式.
def create #something respond_to do |format| format.js format.html end end
然后在你的视图中,在view / users /目录下,创建一个create.js文件,在文件中,你可以执行js动作,比如获取新记录,并将新记录追加到用户列表中.
参考:
http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#form-for