我试图在表单提交后呈现我在当前页面之上创建的部分内容。这应该在控制器的create方法中发生,但我似乎无法弄清楚这是否可以在Ruby中完成,或者我是否应该使用Javascript渲染它。
这是我到目前为止所尝试的内容:
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及其渲染功能来完成。
答案 0 :(得分:0)
您在此处显示的代码并不是真正的问题。这一切都在视野中。
您需要阻止表单提交中的默认操作,即发布到表单URL。如果浏览器发布到该URL,它将呈现响应。一旦你阻止了默认操作,你就需要使用javascript自己提交表单并设置回调来处理响应。该回调应该将html放在您希望它在页面中的位置。如果其中任何部分不清楚,我可以扩展它们。