如何使facebox弹出窗口保持打开状态,并且提交后facebox内的内容会发生变化
我是jQuery总计n00b 。 在我的rails app中,这会发生什么:
我在主页上,点击此链接:
Sign up
一个漂亮的facebox弹出窗口显示并呈现此视图和包含的窗体:
# /app/views/invites/new 'registration_code', :action => 'create' }, :id => 'codeForm') do %>
我叮叮当然提交,如果代码有效,用户将被带到另一个控制器的另一个页面:
def create # some stuff redirect_to :controller => 'users', :action => 'type' end
现在我想渲染那个页面INSIDE SAME弹出窗口包含表单,按下提交按钮但我没有IDEA如何做到这一点。 我尝试过FaceboxRender但是会发生这种情况:
原始版本:
# /controllers/users_controller def type end
如果我改变它就像没有发生任何事情:
# /controllers/users_controller def type respond_to do |format| format.html format.js { render_to_facebox } end end
如果我改变它(我知道错了,但我是一个n00b,所以没关系:-):
# /controllers/users_controller def type respond_to do |format| format.html { render_to_facebox } format.js end end
我得到了这个渲染:
try { jQuery.facebox("my raw HTML from users/type.html.erb substituted here")'); throw e }
有解决方案?
非常感谢!!
现在我从firebug控制台得到一个“Ajax not defined”错误。 这是什么意思?
你可以继续使用facebox_render或其中一个分叉,它会让一切变得更容易:)
关于你的问题,你需要的是facebox中的表单来发出一个AJAX请求,这样你就可以使用format.js来响应这个调用了。 因此,在这种情况下,您需要使用form_remote_tag
来使用AJAX发布数据。
在控制器中,您将收到一个AJAX请求,您将使用respond_to.js处理它,然后您可以再次创建一个render_to_facebox。 现在,您将在facebox中看到您想要的内容。
在视图中:
# /app/views/invites/new <% form_remote_tag({ :controller => 'registration_code', :action => 'create' }, :id => 'codeForm') do %> <%= text_field_tag :code %>
<%= submit_tag 'Confirm' %> <% end %>
在控制器中:
# /controllers/users_controller def type respond_to do |format| format.html format.js { render_to_facebox } end end
我希望它有点帮助,ciao!