我有一个典型的“创建”表单操作,设置为远程调用。
我想要做的是在提交表单后,将表单替换为带有附加表单字段的“编辑”视图,这样一旦他们提交第二个表单,它就会更新而不是创建新记录。
所以基本上,表单将从“创建”变为“编辑”......但都是通过 ajax 调用。
我正在运行 Rails 3.2。
我有一个典型的“创建”表单操作,设置为远程调用。
我想要做的是在提交表单后,将表单替换为带有附加表单字段的“编辑”视图,这样一旦他们提交第二个表单,它就会更新而不是创建新记录。
所以基本上,表单将从“创建”变为“编辑”......但都是通过 ajax 调用。
我正在运行 Rails 3.2。
你做一个 AJAX POST 到/resources
def create
...
# you set @resource to be used in edit form
@resource = Resource.create params[:resource]
respond_to do |format|
# tell controller to respond to requests with JS format
format.js
end
...
end
实际上,如果您只想要这种行为,您可以删除控制器中的任何内容。
def create
...
# you set @resource to be used in edit form
@resource = Resource.create params[:resource]
...
end
请务必使用 JS 格式进行 POST:
<%= form_for @resource, format: :js %>
文件create.js.erb
由控制器提供,并由浏览器运行。
$(selector).html("<%= escape_javascript( render 'edit') %>")
您必须selector
根据页面中的内容定义新项目的表单。
文件_edit.html.erb
在前一个文件中内联呈现
<%= form_for @resource, remote: true do %>
...