Rails:在js.erb文件中渲染部分的正确方法是什么3.2.7

时间:2012-08-29 22:48:08

标签: jquery ruby-on-rails

我读过帖子说无法在js.erb文件中呈现部分内容。实现这个目标的正确方法是什么?

我正在尝试使用jquery ui在对话框中呈现联系表单。

var contactHtml = $('<div></div>').html("test").dialog({
    autoOpen: false,
    title: 'hi'
});

由于

3 个答案:

答案 0 :(得分:3)

       $('<div></div>').html("<%= j(render :partial => 'example/file') %>")

请记住使用j(与escape_javascript同义)转义渲染调用。在处理ajax调用时,你会经常使用这种方法。

修改

如果从资源文件夹中尝试此操作,则无法进行此操作,您将获得未定义的方法渲染错误。以下是similar Question了解详情

答案 1 :(得分:1)

我仍然使用了部分表单,但是我用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

答案 2 :(得分:0)

通常,您可以在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 %>

希望这有帮助!