0

我试图在提交表单后呈现我在当前页面顶部制作的部分内容。这应该发生在控制器的 create 方法中,但我似乎无法弄清楚这是否可以在 Ruby 中完成,或者我是否应该使用 Javascript 来渲染它。

这是我到目前为止所尝试的:

  • 在与 new.html.erb 相同的文件夹中创建了一个部分(称为 _lightbox.html.erb)
  • 控制器渲染更改为:

def create
 @user = User.new(params[:user])
  respond_to do |format|
    if @user.save
      BackgroundJob.perform_async(@user.id)
      format.html { render :partial=>"lightbox", :layout=>false}
      format.json { render json: @user, status: :created, location: @user }
    else
      format.html { render action: "new" }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

我已经阅读了渲染,但是使用 :partial 键它只是在新页面上渲染部分。我可能应该只是将表单更改为使用 :remote 并添加带有 ajax 成功的灯箱式内容,但是我很好奇这是否可以使用 Ruby on Rails 及其渲染功能来完成。

4

1 回答 1

0

您在此处显示的代码并不是真正的问题。一切尽在眼前。

您需要阻止表单提交的默认操作,即发布到表单 URL。如果浏览器发布到该 URL,它将呈现响应。阻止默认操作后,您需要自己使用 javascript 提交表单并设置回调来处理响应。该回调应该将 html 放在页面中您想要的位置。如果其中任何部分不清楚,我可以对其进行扩展。

于 2012-12-31T21:29:05.717 回答