【发布时间】:2012-08-29 22:48:08
【问题描述】:
我读过帖子说无法在 js.erb 文件中呈现部分内容。实现此目的的正确方法是什么?
我正在尝试使用 jquery ui 在对话框中呈现联系表单。
var contactHtml = $('<div></div>').html("test").dialog({
autoOpen: false,
title: 'hi'
});
谢谢
【问题讨论】:
标签: jquery ruby-on-rails
我读过帖子说无法在 js.erb 文件中呈现部分内容。实现此目的的正确方法是什么?
我正在尝试使用 jquery ui 在对话框中呈现联系表单。
var contactHtml = $('<div></div>').html("test").dialog({
autoOpen: false,
title: 'hi'
});
谢谢
【问题讨论】:
标签: jquery ruby-on-rails
$('<div></div>').html("<%= j(render :partial => 'example/file') %>")
记得用 j 转义你的渲染调用(与 escape_javascript 同义)。在处理 ajax 调用时,您会经常使用这种方法。
编辑
如果您从资产文件夹尝试此操作,则这是不可能的,您将收到未定义的方法渲染错误。这是similar Question了解更多详情
【讨论】:
我仍然使用部分表单,但我使用 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 %>
希望这会有所帮助!
【讨论】: