我想发送一个javascript数组,由我的控制器中的方法处理。 我想我做错了。我是一个完整的RoR,jquery和ajax noobie。这就是我所拥有的。请给我一些指导:
<div id="dataTable" class="dataTable" style="width: 680px;height: 300px; overflow: scroll"></div>
<button>Save!</button>
<script>
var first = true;
var totalChanges = new Array();
$("#dataTable").handsontable({
//...some code that generates appropriate array totalChanges
});
var data = //..some code
$("#dataTable").handsontable("loadData", data);
$(function() {
$( "button").button();
$( "button" ).click(function() {
alert("clicked");
$.ajax({
type: "POST",
url: "save",
data: JSON.stringify(totalChanges),
success: function() { alert("Success!"); }
});
});
});
</script>
我收到此错误:
POST http://10.10.136.244:6500/qtl_table/save 500 (Internal Server Error)
和
Started POST "/qtl_table/save" for 10.64.229.59 at Mon Jun 25 16:58:46 -0500 2012
Processing by QtlTableController#save as
Parameters: {"125,0,\"\",\"Ph upt 1-2\""=>{","=>{"125,1,\"\",\"DOR364\""=>{","=>{"125,2,\"\",\"G19833\""=>nil}}}}}
LOGGER WORKS
Completed 500 Internal Server Error in 81ms
ActionView::MissingTemplate (Missing template qtl_table/save with {:formats=>[:html], :handlers=>[:rjs, :rhtml, :erb, :rxml, :builder], :locale=>[:en, :en]} in view paths "/usr/home/benjamin/phavubase/qtl/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/declarative_authorization-0.5.5/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/devise_cas_authenticatable-1.1.1/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/devise-1.2.1/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/kaminari-0.12.4/app/views"):
app/controllers/qtl_table_controller.rb:18:in `data'
app/controllers/qtl_table_controller.rb:25:in `save'
Rendered ruby/1.8/gems/actionpack-3.0.8/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (0.8ms)
编辑: 应用程序/控制器/ qtl_table_controller.rb
...
def save
logger.debug "\nLOOK! WE SAVED! #{params[data]}\n"
render "index"
end
...
我添加了render:layout =&gt; false,但我仍然得到丢失的模板错误。另外,有人建议我开始向控制器添加逻辑,但数据参数看起来非常时髦。它应该是一个数组,我变成了一个字符串。你能给我一些帮助吗?
答案 0 :(得分:0)
您应该在app/views/qtl_table/save.html.erb
中创建模板,或在控制器中渲染某些内容。如果控制器操作中没有呈现任何内容,Rails会尝试显示默认模板,但您没有。
答案 1 :(得分:0)
同意Riateche的回答。您需要向控制器添加一些逻辑才能正确响应。
查看控制台输出,可以在参数哈希中看到json数据。您可以简单地访问控制器中的值:
params["125,0,\"\",\"Ph upt 1-2\""]
params["125,0,\"\",\"Ph upt 1-2\""][","]
您只需将其映射到您的activerecord模型并保存即可。
答案 2 :(得分:0)
由于您希望它在AJAX中响应,您可以通过添加
告诉Rails不要呈现任何内容render :layout => false
到控制器动作