1

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

助けてくれてありがとう!

4

0 に答える 0