Railsで使えるGem

Rails5.1でフォームをウィザード化〜wicked

投稿日:2018年2月21日 更新日:

gem wicked

wickedは、フォームを小分けにして、ウィザード形式にすることができる.
その仕組としては、まず、普通のフォームでデータを作って、その後、wickedでいくつかのステップで遷移するフォームを作ることができるので、そのフォームでデータを更新していく形になる.

情報
schneems/wicked
Wizard-ify Your Rails Controllers with Wicked

RailsCastsが全無料化してた!
#346 Wizard Forms with Wicked

まず、Gemfileにgemを追記して、bundle

ウィザード用のコントローラーを作成する

名前はなんでもいいんだけど、○○_steps_controllerとすることが多いみたい.

ルーティングの設定

たぶん、使うのはindex,show,updateで足りると思う.

既存のコントローラーのcreateメソッドからウィザードに飛ばす

○○_steps_pathでウィザードの最初のフォームに飛ぶ.

このときに、できたデータをウィザードに引き継ぐ必要がある.

deviseとかのユーザー情報なら、次にcurrent_userとかで更新の対象となるデータを引き継ぐことができる.
けど、普通の場合はsessionなどで引き継ぐしかない.
*セキュリティー的には後で調べる.

stepsコントローラーを書く

ライブラリをincludeして
stepsメソッドで、フォームを出す順番をきめる.
フォームの名前は自分の好きな名前をつける.

次に、showメソッドを仮に書く.
これはフォームを描画する共通のメソッド.
render_wizardメソッドで順番にフォームを描画する.

showも後から書くupdateも、stepsで共通して使うメソッドなので、ステップごとに場合分けする場合はcaseを使う.

フォームのビューを作る

app/views/○○_steps以下に、stepsで名付けたとおりにhtml.erbファイルを作成する.
ここでは、second.html.erbとthird.html.erb
formのurlはwizard_pathにしておくことで、自動的に次のステップのフォームに飛ぶ.
previous_wizard_pathとnext_wizard_pathにリンクを貼ることで、データの更新を伴わずにフォームを移動できる.

updateメソッドを作る

次のフォームをrender_wizardで作る.
render_wizardに@インスタンスを渡すと、@インスタンス.saveを実行する.

特定のステップに飛ぶにはjump_toで指定した後、render_wizard

最後のフォームの次の行き先は

ウィザード用のコントローラーでオーバーライドすることで、最後の行き先を決めることができる.

RailsCastsでは、redirect_to_finish_wizardメソッドをオーバーライドしてるけど、これは作者は想定してなかったみたい.
オーバーライドすることができるけど、RailsCastsの頃から引数の数が変わってるので、次のように書くことになる.

-Railsで使えるGem
-, , ,

執筆者:

関連記事

no image

Rails3.2でOpenDocumentText(.odt)を作成~serenity

  これも途中経過デス   odtはOpenOffice.orgのwriterなんかの保存形式 serenityはerbライクなodtテンプレートから変数を利用して文書を作成してく …

no image

Rails3.2とBackbone.jsでToDoアプリを作ってみた~backbone-on-rails

  公式 backbonejs.org/ Backbone ドキュメント日本語訳 github.com/enja-oss/Backbone イントロダクション github.com/enja

no image

Rails3でTwitter Bootstrapのサーチフォームを実装する~form_tag

目次1 git & gitolite2 仕組みを考える3 フィーチャの作成4 Viewの作成5 Controllerの作成6 Modelの作成7 テストが通らない!8 mergeして終わり g …

Rails4.0で添付したpdfファイルの中身を全文検索の対象にする〜carrierwave、pdftotext、pg_bigm

By: Uncalno Tekno – CC BY 2.0 環境 Ubuntu server 12.04 sunspot_cellにしようとおもってたけど、ライブラリとか勉強することが多く …

RailsでReactコンポーネントをつかう

By: justine warrington – CC BY 2.0 目次1 React on rails2 インストール3 react on railsで生成されるファイル4 mater …