如何编写Rails代码来处理来自客户端(JS)的Phonegap开发请求

时间:2011-12-23 06:10:57

标签: javascript ruby-on-rails mobile ruby-on-rails-3.1 cordova

已编辑问题

据我所知,我不能将Rails代码抛入Phonegap,我必须编写一些静态页面并使用JS来进行数据的服务器通信。我的问题是如何编写Rails代码来处理http请求以返回带有信息的JSON?

由于

旧问题

我构建了一个Rails移动应用程序,我有兴趣使用Phonegap将其转换为原生的iPhone和Android应用程序。

我四处搜索,并没有真正找到关于如何做到这一点的好教程。我看了Quick Left video并且我很困惑为什么需要额外的中间磨损代码。根据我的理解,使用Phonegap我需要在javascript中重写所有前端和数据提取。

如果有人可以提供一些见解或指向我如何将我的Rails应用程序与Phonegap集成,请告诉我。

由于

3 个答案:

答案 0 :(得分:2)

我不认为这是可能的。 Ruby需要一个解释器,除非它在浏览器中,否则它无法运行。我认为唯一的方法是使用javascript

答案 1 :(得分:0)

你不能,但也许你想尝试Rhodes:http://rhomobile.com/products/rhodes/

答案 2 :(得分:0)

如果您有这样的控制器,Rails 3.1.x已经返回JSON请求:

class EaracheMyEyeController < ApplicationController

  def show
    @earache_my_eye = EaracheMyEye.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @earache_my_eye }
    end
  end
end

如果您访问对象的网址,format.json { render json: @earache_my_eye }部分会将数据呈现为JSON,例如earachemyeyes/1.json

因此,在您的手机间隙应用中,您可以调用URLS GET方法来接收数据,并在网址末尾添加.json以接收JSON格式的数据。

更新

我最近了解了一些关于phonegap中JSONP请求的内容。它们只是 GET请求。没有帖子。

但是,您可以附加_method=POST,并将configure.middleware.swap(Rack::MethodOverride,Rack::RestfulJsonpMiddleware添加到您的conf / environments /(生产/开发/测试).rb文件中

将类似内容添加到您的库中:

https://github.com/quickleft/kbomb_phonegap_server/blob/master/lib/rack/restful_jsonp_middleware.rb

这允许您发送实际的GET请求,但它会被您_method=POST或您真正需要的任何方法读取和处理。你不能使用内置的Rack :: MethodOverride,因为它只实现了POST,没有别的东西(意味着促进PUT和GET)。因此,https://github.com/quickleft/kbomb_phonegap_server/blob/master/lib/rack/restful_jsonp_middleware.rb处的文件构建了一个新的Rack中间件,允许您使用所有HTTP方法。