Ruby on Rails:将javascript数据发送到ruby控制器
我想发送一个javascript数组,由我的控制器中的方法处理。 我想我做错了。 我是一个完整的RoR,jquery和ajax noobie。 这就是我所拥有的。 请给我一些指导:
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!"); } }); }); });
我收到此错误:
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)
编辑:app / controllers / qtl_table_controller.rb
... def save logger.debug "\nLOOK! WE SAVED! #{params[data]}\n" render "index" end ...
我添加了render:layout => false,但我仍然得到了丢失的模板错误。 另外,有人建议我开始向控制器添加逻辑,但数据参数看起来非常时髦。 它应该是一个数组,我变成了一个字符串。 你们能给我一些帮助吗?
你应该在app/views/qtl_table/save.html.erb
创建一个模板,或者在你的控制器中渲染一些东西。 如果在控制器操作中没有呈现任何内容,Rails会尝试显示默认模板,但您没有。
同意Riateche的回答。 您需要向控制器添加一些逻辑才能正确响应。
查看控制台输出,您可以在参数哈希中看到json数据。 您可以简单地访问控制器中的值:
params["125,0,\"\",\"Ph upt 1-2\""] params["125,0,\"\",\"Ph upt 1-2\""][","]
您可以将它映射到您的activerecord模型并保存。
由于您希望它在AJAX中响应,您可以告诉Rails不要通过添加来呈现任何内容
render :layout => false
控制器动作
- 用于创建ajax关系的关系控制器-NoMethodError:未定义的方法` _url’
- rails 4- 401未经授权的error handling
- 如何使用rails中的link_to_remote调用文件下载?
- 有没有办法使用simple_form for Rails提交ajax / json请求
- Rails form_for with file_field and remote => true and format =>:js
- 定期发送ajax请求
- 使用Ruby On Rails在AJAX中获得星级评分
- rails link_to remote with params
- 如何将包含’include’关联的记录转换为JSON