我在rails上使用ruby,我想渲染部分点击(使用jquery)这个例子:
$('#submit').on('click', function(){
$('#lol').append("<%= escape_javascript(render :partial => 'myPartial' ) %>");
}
我基本上想要提交一个表单然后以只读格式显示结果(渲染部分)而不刷新页面。问题是我无法在资产管道中使用渲染。如何在视图文件夹中包含我的JavaScript文件,或者这个问题的解决方案是什么?
答案 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