我在 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
感谢您的帮助!