【问题标题】:How to use js file within view folder如何在视图文件夹中使用js文件
【发布时间】:2014-07-07 14:59:27
【问题描述】:

我在 Rails 上使用 ruby​​,我想在点击时渲染部分内容(使用 jquery),例如:

$('#submit').on('click', function(){  
  $('#lol').append("<%= escape_javascript(render :partial => 'myPartial' ) %>");
}

我基本上想提交一个表单,然后在不刷新页面的情况下以只读格式显示结果(渲染部分)。问题是我不能在资产管道中使用渲染。如何从视图文件夹中包含我的 JavaScript 文件,或者什么是解决此问题的好方法?

【问题讨论】:

    标签: jquery ruby-on-rails ruby renderpartial


    【解决方案1】:

    查看您的代码

    $('#submit').on('click', function(){  
     $('#lol').append("<%= escape_javascript(render :partial => 'myPartial' ) %>");
    } 
    

    我认为您在 ajax 和普通 jquery 之间存在混淆。如果您不需要执行任何其他操作,那么您应该使用普通的 jquery 来显示和隐藏您的内容。为此,您需要将此代码放入您的 app/assets/javascript/application.js 或创建一个新文件,然后在 application.js 中要求它,如

    //= require file_name
    

    在您的视图中,您可以通过为内容赋予如下样式来隐藏内容的父元素:

    #your_content_container{
      display: none;
    }
    

    然后将你的 jquery 代码放在 your_file.js 中

    $(document).on("click","#submit",function(){
      $("##your_content_container").show();
    })
    

    如果它是您的问题所说的表单,那么您也需要在控制器中执行一些逻辑,因此您应该使用 Ajax

    由于它是一个表单,因此您需要在表单中使用 remote: true 选项,例如:

    <%= form_for(@user, remote: true) do |f| %>
      // your fields
    <% end %>
    

    然后在你的控制器中你可以拥有

    def your_method
      #do your logic here
      respond_to do |format|
        format.js{}
      end
    end
    

    这将允许 Rails 在您的视图中查找名为 your_method.js.erb 的文件,您可以在其中调用 jquery 并渲染您的部分。在 your_method.js.erb 中

    $('#lol').append("<%=j render :partial => 'myPartial' %>");
    

    详情请参考Working with Javascript in Rails

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多