私は3つのリンクをUJSを使用してそれらの下のコンテナに情報をロードする3つのアプリケーションがあります。経験を完結させるために、情報が読み込まれている間に「Loading ...」というテキストを少し表示したいと思います。そこで私はSimone CarlettiのpostのjQueryを使ってそれを達成しようとしました。しかし、jQueryによっては、最初のリンクがクリックされたときに2つの異なることが起こります。 (他の二つがクリックされたときに両方のシナリオでは、何も起こりません。)Rails 3用のスピナーを表示UJSがタイプエラー
- 私はだから私は
$("#tabs-1").html(data);
に私のjQueryを変更することを修正するためにTypeError: 'undefined' is not a function (evaluating '$("#tabs-1").js(data)')
を取得下のコードを考えます。その後:
- $(「#tabs:
- 例外TypeErrorが離れ
- 行く 'ロードを...' 私の最初のリンクをクリックする
- が表示されないようにフォーマットされていない、余分なコードのすべての種類をレンダリング-1" ).htmlを(「n個のテキスト\ :</H4> \ nは \ nは テキスト</LI> \ nは</div> \ nは</div> \ nは
。
HTMLを生成:
<div id="tabs">
<ul id="infoContainer">
<li><a href="/profiles/1/profile_reviews" class="active" data-remote="true" id="profile_loader">Cred</a></li>
<li><a href="/profiles/1/profile_about" class="inactive" data-remote="true" id="profile_loader">About</a></li>
<li><a href="/profiles/1/profile_credits" class="inactive" data-remote="true" id="profile_loader">Credits</a></li>
<span id="loading">Loading...</span>
</ul>
<div id="tabs-1">
# load info here
</div>
</div>
を情報を読み込み、私profiles_controller.rb
アクションの例:
def profile_about
@profile = Profile.find(params[:id])
respond_to do |format|
format.js { render :layout => nil }
end
end
マイprofile_about.js.erb:
$("#tabs-1").html("<%= escape_javascript(render (:partial => "profile_about")) %>");
の私application.js:私のCSSで
$(function() {
var toggleLoading = function() { $("span#loading").toggle() };
$("#profile_loader")
.bind("ajax:loading", toggleLoading)
.bind("ajax:complete", toggleLoading)
.bind("ajax:success", function(event, data, status, xhr) {
$("#tabs-1").js(data);
});
});
:私の<head>
で
span#loading {
float:right;
padding:10px 5px;
color:#666666;
}
:
<script src="/javascripts/jquery.js?1316133561" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1316133957" type="text/javascript"></script>
<script src="/javascripts/jquery-ujs.js?1316133561" type="text/javascript"></script>
<script src="/javascripts/application.js?1317960952" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity-token"/>
<meta name="csrf-token" content="k1RB3GSMFweZ/ty9haXTCWxYTOZB4DxQ90uEGTIhNo8="/>
UPDATE:
私はrespond_toのformat.jsとformat.xmlを削除し、のみformat.html保つ、profile_about.js.erbを削除、および.htmlの(データ)としてバインディングを維持した場合、コンソールは言う:
ActionView:MissingTemplate (Missing template profiles/profile_about with {:handlers=>[:rxml, :builder, :rjs, :erb, :rhtml], :locale=>[:en, :en], :formats=>[:html] in view paths "/Users/me/Desktop/app/views", "/Users/me/Desktop/app/vendor/plugins/paperclip/app/views"):
app/controllers/profiles_controller.rb:87:in 'profile_about' #format.html
app/controllers/profiles_controller.rb:86:in 'profile_about' #the respond_to to |format|
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout
私はすべてが正しく設定されていないようです。 'respond_to'という形式のformat.js(とjs.erbファイル)を削除すると、リンクをクリックした後でパーシャルがレンダリングされることはなくなりました。 – tvalent2
@ tvalent2コンソールには何もありませんか?どのバージョンのRails?私のテストでも部分的にレンダリングされますが、私はそれが重要ではないと思っています。そしてあなたは間違いなくjQuery(プロトタイプではない)を使用していますか? –
@tvalentレイクルートはあなたが期待していることを示していますか?適切な場所にテンプレート? –