-
ID:7Zsjg/ さんの質問

rail4.0をdot installを参考に学習しています。
この度dbの内容を一覧表示、投稿、追加処理をページ遷移せずにトップページのみで完結させたいのですがその方法が分かりません...

dot installでは
一覧表示ページ→新規追加ページ(/new)→一覧表示ページ
の流れになっていたのですが、トップページですべて完結させるには
どういったことをしないといけないのでしょうか?

routesを確認すると、projects#newのURI Patternが
/projects/new(.:format)となっていたので
これを/projects(.:format)書き換えないといけないのかなと想い、
resources :projects do
get ’projects’ => ’projects#new’
end
としているのですが上手く行かずに困っています...

みんなの回答 1 件

ID:JXeOXQ さんの回答

resourcesはRESTfulなルーティングを自動で作ってくれるもので一種のひな形です。

resourcesは以下のルーティングを発行します。
get ’projects’ => ’projects#index’ →トップ画面を担当。
get ’projects/new’ => ’projects#new’→新規作成フォームを担当
post ’projetcts’ => ’projects#create’ →newの値を元にデータベースに登録
get ’projects/:id/edit’ => ’projects#edit’ →idの値を持つ既存のレコードの編集フォームを担当
patch ’projects/:id’ => ’projects#update’ →editの値を元にデータベースを更新する
delete ’projects/:id’ => ’projects#destroy’ →idの値を持つ既存のレコードを削除します

ページ遷移しない場合、Railsのremote: trueを使用します。これは自動的にCSRF対策とともにajaxで値を送信してるものです。

具体的には以下の様な構成になります。

indexを表示ページとして、新規proect作成フォームが設置されています。そのフォームにはremote: trueでajax処理を施しておきましょう。
そのフォームにはcreateアクションを指定し、結果の成否はJavaScriptで「ajax:success」および「ajax:error」のコールバックで拾い、成功した場合は、新たにその項目を追加します。

これはupdateおよびdestroyアクションも同様で、それぞれremote: trueを付与したフォーム、リンクを指定すればページ遷移せずに処理できます。
destroyの場合はdeleteメソッドでリンクを踏むだけで削除してくれるのでらくだと思います。

一連の流れはdotinstallにもあるので何度も見なおして構造を理解することが重要だと思います。

ID:JXeOXQ

なんか酷い日本語になった

最終更新日:2014-01-19 (1,537 views)

関連するトピックス

ページ上部に戻る