Rails / facebox_render - 没有定义Ajax(facebox总是加载...)

时间:2010-10-20 17:57:37

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

我尝试使用facebox_render和rails 3进行简单的测试。

以下是我的步骤:

1。)已安装Jquery 1.4.2(Jrails)

2.。)安装了插件 rails plugin install git://github.com/ihower/facebox_render.git

3.)并添加以下内容:

在我的application.html.erb

<head>
  <title><%= yield(:title) || "Untitled" %></title>
  <%= stylesheet_link_tag "reset", "application", "facebox" %>
  <%= javascript_include_tag :defaults, "facebox" %>
  <%= csrf_meta_tag %>
  <%= yield(:head) %>
</head>

和我的application_controller

class ApplicationController < ActionController::Base
  include FaceboxRender
end

当我尝试在facebox中加载某些内容时,我只有加载器,没有任何内容......

例如,在我的家/ index.html.erb

<%= facebox_link_to "test", :url => "/images/rails.png" %> 

我很高兴知道我错在哪里,在文档中:

* facebox_link_to helper, it’s will launch loading facebox first, send ajax request second)
* link_to :remote => true, form_for :remote => true …etc Ajax helper (for Rails 3)

所以我觉得我不得不发送ajax请求..

看了下面的帖子:How to make facebox popup remain open and the content inside the facebox changes after the submit似乎我遇到了同样的问题:我可以在你的firebug控制台中看到“Ajax未定义”

我的js文件正确加载:(如源代码所示)

<link href="/stylesheets/reset.css" media="screen" rel="stylesheet" type="text/css">
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css">
<link href="/stylesheets/facebox.css" media="screen" rel="stylesheet" type="text/css">
<script src="/javascripts/jquery.min.js" type="text/javascript"></script>
<script src="/javascripts/rails.js" type="text/javascript"></script>
<script src="/javascripts/facebox.js" type="text/javascript"></script>
<script src="/javascripts/application.js" type="text/javascript"></script>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我做的是先安装facebox_render,然后再安装jRails。如果要重新安装,可能需要添加--force。

确保您拥有最新的jQuery。首先包括jQuery然后是facebox.js 此外,我总是确保facebox.css首先链接到其他样式之前,它可能会覆盖您的一些样式。并验证您是否通过查看源使用FF,js和css链接正在运行。

此外,请验证此行:

<%= facebox_link_to "Sign Up&nbsp;", :url => new_account_path, :method => :get %>

我添加了:method =&gt; :确保它创建:

<a onclick="jQuery.facebox(function(){ jQuery.ajax({data:'authenticity_token=' + encodeURIComponent('Jbge/CYS4eXQ1d21E/S7tEcTm3dGdStdCtX9MwDx98o='), dataType:'script', type:'get', url:'/account/new'}) }); return false;" href="#">Sign Up&nbsp;</a>