2012-01-05 6 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が何であるか分かりません。

この修正する方法:あなたが何もしないJS応答を返すが、pingして行くために、クライアントに伝えられるよう、変更load('c.html.erb'...少し奇妙でしょう。この方法

load('/path/to/c.html.erb' ...へ:

オプション1サーバーを再起動します。正当な理由がないために余分な往復。

オプション2:

あなたの全体的なアプローチを考えれば、より良いオプションです。

# welcome_controller.rb 
def update 
end 

# update.js.erb 
$('#wrapper2').html("<%= escape_javascript render(:file => 'c.html.erb') %>"); 
関連する問題