【问题标题】:Ruby on Rails Accept post requestRuby on Rails 接受发布请求
【发布时间】:2012-06-13 02:12:30
【问题描述】:

我需要创建一个 Rails 应用程序,该应用程序将接受来自移动客户端的 Post 请求并存储随请求发送的信息。我将使用 Ajax 发送请求。使用以下参数发送请求: 纬度(浮点数) 经度(浮点数) 时间戳(Javascript 日期对象)

我已经使用 rails generate 资源创建了一个包含适当字段的数据模型, 但我不确定如何让 Rails 接受 Post 请求并创建一个包含必要信息的对象。我应该如何编辑 Rails 生成的代码来实现这一点?

谢谢,我很抱歉提出这么简单的问题。

【问题讨论】:

    标签: ruby-on-rails ruby post http-post


    【解决方案1】:

    很难从这个问题中看出你对 Rails 了解多少,但这都是 Rails 的基本功能,所以你需要从头开始......如果你完成这两个教程,你将能够开始吧:

    1. 学习Rails Controllers
    2. 学习Rails Routing

    然后试一试,创建一个新控制器和一些与您正在寻找的匹配的路由,然后您可以使用 RESTClient 之类的 mozilla 插件来使用一些虚拟数据测试您的路由。

    但是说真的,这里的第一步是“学习 Rails”。 :)

    【讨论】:

    • 我的问题出在控制器上。我一直在尝试将参数传递给 Report 控制器的 create 方法。据我了解,在地址栏中输入“localhost:3000/reports/create/1?latitude=4”应该会创建一个纬度字段 = 4 的新报表。但保存到数据库的报表对象只有空字段。
    • 然后我有另一个教程给你:edgeguides.rubyonrails.org/debugging_rails_applications.html 你应该在调试模式下运行你的服务器并注意输出,然后你可以将你的参数转储到控制台并开始调试 - 开始测试您的纬度参数是否完全进入控制器。
    • 好的,所以我终于得到了 Report#create 来接受 URL 中指定的参数。以前的代码是@report=Report.new(params[:report])。我必须明确列出参数才能接受它们@report=Report.new({latitude:params[:latitude]})。我有什么理由必须这样做吗?
    • 感谢接受,好吧,@report=Report.new(params[:report]) 是错误的,应该是 @report=Report.new(params[:latitude]),这样做不行?为什么你的路线有一个 1?这通常不是创建路由,而是您正在编辑现有对象的成员路由(ID 为 1)
    • 是的,我解决了这个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2014-03-19
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多