2012-01-05 47 views
0

我使用jQuery .load将我的html文件作为片段加载到div中时遇到了一些困难。经过大量测试后,我的结论是它找不到c.html文件,但在我测试几乎所有可能的c.html加载版本之后,我仍然无法理解它。Ruby on Rails:通过jQuery加载html片段

index.html.erb和c.html.erb都位于同一个文件夹中,欢迎使用。

感谢所有帮助我能,被它打算为一对夫妇现在的天......从那里我要加载的片段的HTML文件(index.html.erb)

部分:

<div id="menuwrapper"> 
    <div class="tabArea"> 
     <%= link_to 'Lorem', {:action => 'update', :controller => 'welcome'}, 
     {:class=>"tab",:remote=>true} %> 
    </div> 
</div> 
<div id="wrapper2"> 
    <!--Where i want to load--> 
</div> 

welcome_controller:

def update 
    render :js => "$('#wrapper2').load('c.html.erb', function() {alert('Load was 
    performed.');});" 
end 

的HTML片段我想加载(如基本的,因为它可以得到):

<!DOCTYPE html> 
<html> 
    <head><title>Title</title></head> 
    <body> 
    <div>Content</div> 
    </body> 
</html> 

路线:

get "welcome/update" 

谢谢!

回答

0

大图片...你回来在你的update方法的JavaScript只是... javascript。它在客户端(浏览器)端执行,浏览器不知道c.html.erb是什么,因为它是服务器端文件。

方法来解决这个问题:

选项1:更改load('c.html.erb'...load('/path/to/c.html.erb' ...

这种方法会有点奇怪,因为你会回来,什么也不做,但告诉客户端去ping到一个JS响应再次服务器。额外往返没有理由。

选项2:

更好的选择,给你的总体思路。

# welcome_controller.rb 
def update 
end 

# update.js.erb 
$('#wrapper2').html("<%= escape_javascript render(:file => 'c.html.erb') %>");