js.erb ファイルでパーシャルをレンダリングすることはできないという投稿を読みました。これを達成する適切な方法は何ですか?
jquery ui を使用して、ダイアログ ボックスに連絡先フォームを表示しようとしています。
var contactHtml = $('<div></div>').html("test").dialog({
autoOpen: false,
title: 'hi'
});
ありがとう
js.erb ファイルでパーシャルをレンダリングすることはできないという投稿を読みました。これを達成する適切な方法は何ですか?
jquery ui を使用して、ダイアログ ボックスに連絡先フォームを表示しようとしています。
var contactHtml = $('<div></div>').html("test").dialog({
autoOpen: false,
title: 'hi'
});
ありがとう
$('<div></div>').html("<%= j(render :partial => 'example/file') %>")
j (escape_javascript と同義) で render 呼び出しをエスケープすることを忘れないでください。このアプローチは、ajax 呼び出しを扱うときによく使用します。
編集
アセット フォルダーからこれを試みている場合、これは不可能であり、未定義のメソッド レンダリング エラーが発生します。詳細については、同様の質問があります
フォームにはまだパーシャルを使用しましたが、ajaxでレンダリングしました。
私のjs.erbファイルで
var contactHtml = $('<div></div>').dialog({
autoOpen: false,
title: 'Get a Free Estimate',
minWidth:400,
close: function(){$(this).empty();}
});
$('#consultation').click(function(){
$.get('/contact_form', function(data){
contactHtml.append(data);
});
contactHtml.dialog('open');
return false;
});
ルート:
match "contact_form" => "application#contact_form", :via => :get
アプリケーションコントローラー:
def contact_form
@contact = Refinery::Contacts::Contact.new
render :partial => "/contact_form", :locals => {:contact => @contact}
end
通常、js.erb で以下のようなことができます。
$("yourclass").javascript_action("<%= escape_javascript(render('partial_name', :local_var_name => @local_var_name)) %>");
そしてあなたの部分的なパスのローカルで:
<%= render 'partial_name', :local_var_name => local_var_name %>
お役に立てれば!