Rails 未对 POST 中的嵌套数据进行编码

发布于 2024-09-26 11:39:57 字数 949 浏览 6 评论 0原文

我目前正在开发使用 jQuery 的 Rails3 应用程序。我有一个 javascript 插件,它根据用户所做的选择返回 JSON 数据数组。我有一个保存按钮,可以从 java 脚本插件读取该数据数组,并将其发送回 Rails 应用程序进行保存。 javascript 似乎正在工作,它进行了正确的 ajax 调用并将数据发送回 Rails 应用程序。问题似乎是 Rails 对已放回服务器的数据进行编码的方式。

问题是我试图回发到 Rails 应用程序的嵌套数据。我有一组班次,似乎被视为一个长字符串,而不是我期望的值的哈希值。这是数据轨的输出。

参数: {"shifts"=>"[{\"start_time\":\"十月星期三 2010 年 06 月 09:30:00 GMT+0100 (BST)\",\"end_time\":\"2010 年 10 月 6 日星期三 13:00:00(格林尼治标准时间+0100) (BST)\",\"活动\":true,\"发生\":\"每周\",\"company_id\":\"1\"},{\"start_time\":\"星期四 2010 年 10 月 7 日 09:30:00 GMT+0100 (BST)\",\"end_time\":\"2010 年 10 月 7 日星期四 13:00:00(格林尼治标准时间+0100) (BST)\",\"活动\":true,\"发生\":\"每周\",\"company_id\":\"1\"}]", “id”=>“1”}

我希望能够在我的控制器中使用以下代码

params[:shifts].each do |shift|
  puts shift.inspect # would expect a hash of values here
end

,但是只有一个字符串而不是值的哈希值。关于为什么 Rails 没有像您期望的那样对哈希值进行编码的任何建议。

I am currently working on rails3 application that uses jQuery. I have a javascript plugin that returns an array of JSON data based on selections that the user has made. I have a save button that reads this array of data form the java script plug in and posts it back to the rails application to be saved. The javascript seems to be working, it makes the correct ajax call and sends the data back to the rails application. The problem seems to be the way rails is encoding the data that has been PUT back to the server.

The problem is the nested data I am trying to post back to the rails application. I have an array of shifts that seems to be getting treated as one long string and not the hash of values I am expecting. Here is the output of the data rails is getting.

Parameters:
{"shifts"=>"[{\"start_time\":\"Wed Oct
06 2010 09:30:00 GMT+0100
(BST)\",\"end_time\":\"Wed Oct 06 2010
13:00:00 GMT+0100
(BST)\",\"active\":true,\"occurrence\":\"weekly\",\"company_id\":\"1\"},{\"start_time\":\"Thu
Oct 07 2010 09:30:00 GMT+0100
(BST)\",\"end_time\":\"Thu Oct 07 2010
13:00:00 GMT+0100
(BST)\",\"active\":true,\"occurrence\":\"weekly\",\"company_id\":\"1\"}]",
"id"=>"1"}

I would expect to be able to then use the following code in my controller

params[:shifts].each do |shift|
  puts shift.inspect # would expect a hash of values here
end

However instead of the hash of values there is just a single string. Any suggestions as to why rails is not encoding the hash values as you would expect it too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掀纱窥君容 2024-10-03 11:39:57

我相信您需要首先将其解析为 JSON。在控制器顶部添加“require 'json'”,然后尝试 JSON.parse(params[:shift]).each {|shift|移位.检查} .

I believe you would need to parse it as JSON first. "require 'json'" at the top of your controller then try JSON.parse(params[:shift]).each {|shift| shift.inspect} .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文