環境:
モデル 1 とモデル 2 の 2 つのモデルがあります。Model1 has_many の model2 です。model1 の管理ページで、model1 に関連付けられた各 model2 に 1 つずつ、_model2.html.erb ファイルのリストをレンダリングします。ユーザーが model1 の管理ページから新しい model2 を作成できるようにするために、model2 のビュー ディレクトリの下に create.js.erb ファイルを作成しました。現在、ファイルは次のようになっています。
$('#back').hide();
$('#allTab').removeClass('active');
$('#activeTab').addClass('active');
$('#completeTab').removeClass('active');
$('html,body').animate({
scrollTop: $('html,body').scrollHeight
}, {
duration: 600,
queue: false
});
$('#activeTabList').closest('.number_of_model2s').text("<%= @model1.model2s.count %>");
$('#activeTabList').append("<li><%= escape_javascript(render partial: 'model2s/model2', locals: {f: @model2, g: @model1}) %></li>");
$('#activeTabList').last().children().effect('highlight', {}, 3000);
問題:
@model1
部分的な作業のレンダリングを行うには、model2 コントローラーの create メソッドで の定義を作成する必要がありました。しかし、アニメーションや強調表示をまったく取得できません。このリストは長くなる可能性があるため、ページの一番下までスクロールする必要があります。リストへの追加をユーザーに見てもらいたい。強調表示はそれほど重要ではありませんが、同様の方法で動作する更新アクションもあり、更新される部分を強調表示したいので、それを機能させようとしています (更新された部分を削除します)。そこで、同じ場所で同じ model2 のパーシャルを再度リクエストします)。
質問:
実行されるように見える唯一のコード行が render 部分行である特定の理由はありますか?
詳しくは:
上記の部分的なレンダリング行を次のように置き換えても、部分的なものはレンダリングされません
$('#activeTabList').append("<li id='model2_<%= @model2.id %>'><%= escape_javascript(render partial: 'model2s/model2', locals: {f: @model2, g: @model1}) %></li>");
管理ページの html では、このようにリスト アイテムの ID を指定しますが、ここに ID を追加するとパーシャルがレンダリングされません。これは私が抱えている問題に関連しているようですか?