如何在视图文件夹中使用js文件

时间:2014-07-07 14:59:27

标签: jquery ruby-on-rails ruby renderpartial

我在rails上使用ruby,我想渲染部分点击(使用jquery)这个例子:

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

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

1 个答案:

答案 0 :(得分:3)

查看您的代码

$('#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