Ruby在同一页面上提交部分表单提交

时间:2012-12-31 19:31:46

标签: ruby ruby-on-rails-3 render

我试图在表单提交后呈现我在当前页面之上创建的部分内容。这应该在控制器的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键它只是在新页面上渲染部分。我应该只是改变使用的形式:远程并添加lightbox-esque内容并获得ajax成功,但是我很好奇是否可以使用Ruby on Rails及其渲染功能来完成。

1 个答案:

答案 0 :(得分:0)

您在此处显示的代码并不是真正的问题。这一切都在视野中。

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