Sencha Touch 2 にフォームがあり、'Ext.Ajax.request' を使用して Heroku でホストされている Ruby on Rails サーバーに値を POST メソッドに渡そうとしています:
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
});
次のように、create 関数の 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
終わり
RoR デスクトップ アプリと Sencha アプリの両方で機能する方法で Ruby on Rails コントローラーに渡されるように、Sencha コードのパラメーターを再フォーマットするにはどうすればよいですか?
RoR コントローラーを次のように変更すると、次のように動作することは既にわかっています。
def create
@festival = Festival.new(:name => params[:name], :details => params[:details], :city =>
params[:city], :period => params[:period], :timings => params[:timings], :telephone =>
params[:telephone])
しかし、それを行うと、Web アプリ側が壊れて、@festival の空白のレコードが保存されます。しかし、Sencha アプリは、レコードを RoR データベースに正常に保存および更新できます。何が起こっている?
これは本当に良いリファレンスでしたが、それがどのように機能するのかわかりません.underscore.jsを台無しにしたくありません: https://gist.github.com/1506953
助けてくれてありがとう!