【问题标题】:How to make facebox popup remain open and the content inside the facebox changes after the submit如何使facebox弹出窗口保持打开状态并且提交后facebox内的内容发生变化
【发布时间】:2011-02-09 04:16:01
【问题描述】:

我是一个 jQuery 总 n00b。 在我的 Rails 应用程序中会发生这种情况:

我在首页,我点击这个链接:

<a href='/betas/new' rel='facebox'>Sign up</a>

一个漂亮的 Facebook 弹出窗口显示并渲染此视图和包含的表单:

# /app/views/invites/new

<% form_tag({ :controller => 'registration_code', :action => 'create' }, :id => 'codeForm') do %>

    <%= text_field_tag :code %>
    <br />
    <%= submit_tag 'Confirm' %>
<% end %>

我点击提交,如果代码有效,用户将被带到另一个控制器的另一个页面:

def create
  # some stuff
  redirect_to :controller => 'users', :action => 'type'
end

现在我想在按下提交按钮后在 SAME 弹出窗口中呈现该页面,但我不知道该怎么做。我试过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 未定义”错误。什么意思?

【问题讨论】:

  • 嗨莱昂纳多,你有没有找到解决你的问题的方法,似乎我有相同的盒子已加载,但没有出现:如果你有任何想法:这是我的帖子:stackoverflow.com/questions/3980844/… .谢谢!!

标签: ruby-on-rails jquery-plugins jquery facebox


【解决方案1】:

你可以继续使用 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 %>
    <br />
    <%= submit_tag 'Confirm' %>
<% end %>

在控制器中:

# /controllers/users_controller
def type
  respond_to do |format|
    format.html
    format.js { render_to_facebox }
  end
end

希望对你有帮助,Ciao!

【讨论】:

  • 谢谢你,Francisco,现在的问题出在:&lt;a href='/betas/new' rel='facebox'&gt;Sign up&lt;/a&gt; 我尝试将其更改为:&lt;%= facebox_link_to "Sign up", :url =&gt; '/betas/new' %&gt; 出现了 facebox 弹出窗口但不加载表单。怎么了?
  • 好吧,恐怕我不太清楚发生了什么事。我会说jQuery有问题。您是否尝试查看 ajax 请求中发生了什么?查看 firebug 和服务器日志。
  • firebug 控制台说:“Ajax 未定义”...?
  • 这是链接: new_beta_url %> 被渲染的: 0.0.0.0:3000/betas/new', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('iMBVH1G0OnU0oMvBWXbwjNAQvoFGWWWqcLrBXSbYtf0=')}) }); return false;" href="#">链接名称 问题是弹出窗口不是空的。我认为没有触发AJAX请求,但是为什么呢?
  • 你确定你正确加载了 jQuery 吗?
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多