3. 新規作成機能

つぎに、データの作成機能をサーバ連携対応したいと思います。

http://{IPアドレス}:3000/rosters.jsonにデータをPOST送信すると、送られたデータを保存してくれるものとします。

 a.    コントローラの修正(createメソッド)

それでは編集作業を行います。Roster/app/RosterServer/roster_server_controller.rbファイルを開いて、3行目に以下を追加してください。

 

3 | require 'json'

 

image012.jpg

 

次に、44行目から54行目を以下のように変更してください。

 

44 |   # POST /RosterServer/create

45 |   def create

46 | #    @rosterserver = RosterServer.create(@params['rosterserver'])

47 |     json = ::JSON.generate(:roster => @params["rosterserver"])

48 |     Rho::AsyncHttp.post(

49 |       :url => "#{SERVER_ADDRESS}/rosters.json",

50 |       :body => "json=#{json}",

51 |       :callback => url_for(:action => :create_callback)

52 |     )

53 |     redirect :action => :index

54 |   end

 

 上記の変更内容を説明いたします。

新規作成画面(new.erb)から入力された情報が@params[“rosterserver”]に入っているので、その値を47行目の::JSON.generateメソッドでJSON形式に変更して、変数jsonに代入しています。

そして、48行目で、作成したJSONデータをRho::AsyncHttp.postメソッドで、サーバへPOST送信しています。POST送信が完了したら、コールバック先として、create_callbackメソッドへ移動するようにしています。

b.    コントローラの修正(create_callbackメソッド)

次に、56行目から、以下を追加してください。

 

56 |   def create_callback

57 |     if @params["status"] == "ok" && @params["body"] == "OK"

58 |       msg = "作成しました。"

59 |     else

60 |       msg = "作成に失敗しました。"

61 |     end

62 |     Alert.show_popup(msg)

63 |     WebView.navigate(url_for(:action => :index))

64 |   end

 

 image014.jpg


56行目からのcreate_callbackメソッドでは、処理の結果に合わせてポップアップを表示して、一覧表示画面へ遷移させています。

 c.    ビューの修正

次に画面の変更を行います。

Roster/app/RosterServer/new.erbファイルを開いて、12行目を以下のように変更してください。

 

12 |     <!--<input type="hidden" name="id" value="<%= @rosterserver.object

         %>"/>-->

 

 

上記の変更の説明をします。

今回は12行目をコメントアウトしただけです。HTMLのhidden要素として、@rosterserverのobjectを渡そうとしていますが、今回はローカルのDBに保存しないので、必要ありません。

 

以上で、新規作成画面の編集は完了です。


 

システム工房エムのサイトへのリンク

住所〒690-0017 島根県松江市西津田3-2-3 TEL.0852-23-8590 FAX.0852-23-8591
Copyright 2008-2010 System Maker M,All right reserved