如何在Rails 4中在没有刷新的情况下在页面上提交表单和更新元素

San*_*ago 8 javascript ajax jquery ruby-on-rails ruby-on-rails-4

我在尝试做一些我认为相当简单的事情时遇到了很多麻烦.

我有一个项目列表,比方说,todos.在该列表的底部,我有一个文本字段,我在其中添加新项目到该列表.我想这样做,以便新项目动态地添加到该列表的底部,而无需像聊天窗口那样刷新整个页面.

我提交了提交表单remote: true并成功提交,但没有重新加载页面,但我无法让新项目同时显示在列表的底部.我必须刷新页面才能看到更改.

我尝试了一些我在SO上找到的不同方法(这里不乏类似的问题)和网络,甚至是一个名为Sync的宝石,但每个都有自己的错误和问题,我无法工作正常.他们每个人都可能是自己的问题.所以我要问:是否有一个"配方"肯定会在Rails 4中成功实现这一点?

Chu*_*Zhu 7

让我们说,现在你有一个用户表单提交,

<%=form_for @user,remote: true%><%end%>
Run Code Online (Sandbox Code Playgroud)

你还有一个控制器,

UsersController
Run Code Online (Sandbox Code Playgroud)

在你的控制器中,你有一个功能,

def create
  #something
end
Run Code Online (Sandbox Code Playgroud)

这是形式.

你唯一需要修改的功能就像

def create
  #something
  respond_to do |format|
    format.js
    format.html
  end
end
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中,在view/users /目录下,创建一个create.js文件,在文件中,您可以执行js操作,比如获取新记录,并将新记录追加到用户列表中.

参考:

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#form-for


Par*_*ngh 0

您可以使用 javascript 查看更改。例如,让我们考虑一个带有操作索引的控制器 Mycontroller,并且您正在索引上提交表单。然后在视图 my_controller/index.js.erb 中创建一个文件

为了反映更改,请在此模板中使用 javascript。肯定是远程发送 ajax 调用,因此要查看更改,您需要使用 javascript 进行一些操作。

谢谢