在我的Ruby on Rails应用程序中,我想在我的视图中使用id = table_div更改表,但是当我使用ajax post并想要渲染add_result_options.js.erb文件时,没有任何反应。 我有这个脚本
$.ajax({
type : "POST",
url : 'http://localhost:3000/systems/add_result_options',
dataType: 'json',
data : { results : { name : array_results } }
});
在我的SystemsController中:
def add_result_options
@resultOptions = params[:results]
respond_to do |format|
format.html
format.js { render :add_result_options }
end
end
在我的add_result_options.js.erb文件中
$("#table_div").remove();
我的视图名为create.html.erb我有我想要更改的表
<table id="table_div">
<tr>
<th>Name</th>
<th>Serial</th>
.......
</tr>
</table>
当在控制台中调用ajax时,我可以看到帖子已经运行但表中没有任何内容发生变化:
Processing by SystemsController#add_result_options as JSON
Parameters: {"results"=>{"name"=>["name", "memory", ""]}}
Rendered systems/add_result_options.js.erb (0.2ms)
Completed 200 OK in 3ms (Views: 1.8ms | ActiveRecord: 0.0ms)
谢谢
答案 0 :(得分:0)
要将#tml添加到#table_div,您必须在Ajax调用完成后使用deferred来插入数据:
$.ajax({
type : "POST",
url : 'http://localhost:3000/systems/add_result_options',
dataType: 'json',
data : { results : { name : array_results } }
success: function(data) {
$("#table_div").append(data);
//Alternativly
//$("#table_div").html(data);
}
});
如果你想在javascript中渲染ruby代码,你必须像这样呈现javascript:
<强> view.html.erb 强>
<script>
$.ajax({
type : "POST",
url : 'http://localhost:3000/systems/add_result_options',
dataType: 'json',
data : { results : { name : array_results } }
success: function(data) {
$("#table_div").append(data);
<% system = System.first %>
var system = <%= raw System %>;
}
});
</script>
<table id="table_div">
<tr>
<th>Name</th>
<th>Serial</th>
.......
</tr>
</table>