0

我有一个典型的“创建”表单操作,设置为远程调用。

我想要做的是在提交表单后,将表单替换为带有附加表单字段的“编辑”视图,这样一旦他们提交第二个表单,它就会更新而不是创建新记录。

所以基本上,表单将从“创建”变为“编辑”......但都是通过 ajax 调用。

我正在运行 Rails 3.2。

4

1 回答 1

3

你做一个 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 %>
  ...
于 2013-05-08T00:05:23.293 回答