1

我在 Sencha Touch 2 中有一个表单,我正在尝试使用“Ext.Ajax.request”将值传递给 POST 方法到 Heroku 上托管的 Ruby on Rails 服务器:

var name = Ext.getCmp('txtFestivalName').getValue(), 
    details = Ext.getCmp('txtFestivalDetails').getValue(),
    city = Ext.getCmp('txtFestivalCity').getValue(),
    period = Ext.getCmp('txtFestivalPeriod').getValue(),
    timings = Ext.getCmp('txtFestivalTiming').getValue(),
    telephone = Ext.getCmp('txtFestivalTelephone').getValue(),
    id = Ext.getCmp('txtFestivalId').getValue() 

Ext.Ajax.request({
        url: 'http://anyapp.herokuapp.com/festivals.json',
        method: 'POST',
        type:'json',
        params: 
        {
            id: id,
            name: name,
            details: details,
            city: city,
            period: period,
            timings: timings,
            telephone: telephone
        },
        callback: this.somecallbackfunction
        scope: this
    });

我想将创建函数的 Ruby on Rails 控制器代码保留为默认值,如下所示:

# POST /festivals
# POST /festivals.json
def create
@festival = Festival.new(params[:festiva])

respond_to do |format|
  if @festival.save
    format.html { redirect_to @festival, notice: 'Festival was successfully created.' }
    format.json { render json: @festival, status: :created, location: @festival }
  else
    format.html { render action: "new" }
    format.json { render json: @festival.errors, status: :unprocessable_entity }
  end
end

结尾

如何重新格式化 Sencha 代码中的参数,以便它以适用于 RoR 桌面应用程序和 Sencha 应用程序的方式传递到 Ruby on Rails 控制器?

我已经想到将 RoR 控制器更改为此有效:

def create
@festival = Festival.new(:name => params[:name], :details => params[:details], :city =>
params[:city], :period => params[:period], :timings => params[:timings], :telephone => 
params[:telephone])

但是,当我这样做时,网络应用程序端会被破坏,它将为@festival 保存空白记录。但是 Sencha 应用程序将能够成功地将记录保存和更新到 RoR 数据库。到底是怎么回事?

这是一个非常好的参考,但我不确定它是如何工作的,我不想弄乱 underscore.js: https ://gist.github.com/1506953

感谢您的帮助!

4

0 回答 0