【问题标题】:Rails: What is the proper way to render a partial in a js.erb file 3.2.7Rails:在 js.erb 文件 3.2.7 中呈现部分的正确方法是什么
【发布时间】: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


    【解决方案1】:
           $('<div></div>').html("<%= j(render :partial => 'example/file') %>")
    

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

    编辑

    如果您从资产文件夹尝试此操作,则这是不可能的,您将收到未定义的方法渲染错误。这是similar Question了解更多详情

    【讨论】:

    • 这会产生以下错误,这就是我发布此问题的原因:[19:02:51.277] 错误:NoMethodError: undefined method `render' for #:0x007ff2b7648708>
    • 这个 js.erb 文件在哪里?
    • 所以将它添加到我的视图文件夹中?这还编译吗?
    • 是的,你可以试试,你不应该得到渲染错误。我从来没有使用过对话框插件,所以我不确定它是如何工作的。
    • 感谢您的帮助,但我认为没有必要开始重新组织我的文件。我刚刚使用了ajax。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2014-10-08
        • 2018-03-18
        • 1970-01-01
        • 2014-01-13
        • 2015-04-19
        • 2015-12-14
        • 2014-10-28
        • 2014-03-22
        • 1970-01-01
        相关资源
        最近更新 更多