RubyOnRails

Railsで前のデータを使って新規作成

投稿日:2012年11月5日 更新日:

前提

今度こそRails3.2からdocxを生成する

テンプレートからデータを代入してdocxを作れるようになったけど、実際には過去のデータを流用して新しいdocxを作りたいことがよくある.

ので、過去のデータで新規作成をできるようにしてみた.

構想

ここではとりあえず、前のデータを使って新規作成の動作は、documents#newにやらせることにした.
前にtemplates#showにdocument新規作成のformを作ったのでdocuments#newは使ってなかったから.

というふうに定義することにした.

routes.rb

なので、config/routes.rbのresource :documentsより前に次のように書いた

view

次にtemplates#showに一覧表示しているdocumentsの一覧から、前のデータを使って新規作成をやりたいのでNewへのリンクを作った.

これでrenew_document_path(document)が、documents/#{document.id}/newというパスを生成してくれる

そして、リンク先のコントローラーでparams[:id]でdocument.idを読める.

documents_controller

フォーム用のモデルとフォームに代入するデータの準備をする.2つの配列からハッシュをつくるのはここを参照した.to_hashを定義してもいいかな.あとsplitとかはいい加減modelに回したい.

view

で、_formは前のままで

DEKITA

こんなデータでnewリンクをクリックすると

前のデータが入力された状態でCreate Documentになってる

*データベースのスキームを直したので普通にdocument.newに初期値を設定すればOKになりました.accepts_nested_attributes_forを設定しているので、document.value.buildを必要な回数分だけやれば関連フォームを必要な分用意してくれます.

参考

railscasts.com/episodes/196-nested-model-form-part-1

-RubyOnRails
-,

執筆者:

関連記事

Rails3.2.11でTwitterBootstrapのモーダルをフォームに使う例

By: Roberto Caiafa – CC BY 2.0 目次1 はじめに2 index.html.erbのnew_***_pathのremoteオプションをtrueにする3 cont …

no image

Rails3.2からBackbone.jsとD3.jsを使う一例

目次1 Backbone.jsからD3.jsを使う2 RailsのネストしたURLでBackboneを使う Backbone.jsからD3.jsを使う d3.jsで力指向グラフを使って遊ぶ2のクラス構 …

githubライクなuiを持つgitlabを試す

  gitoliteリポジトリをバックエンドにしたrails製でgithubライクなweb uiを持つgitlabを試してみた 環境 ubuntu server 12.04.1 目次1 準備 …

collection_selectに複数カラムのテキスト情報を表示

include multiple column value in Ruby on rails Collection_select. Also format the date モデルに [crayon- …

no image

Railsで2ch風掲示板を作ってみた

  今年のGWに作った動画です Railscastsとドットインストールに触発されてチュートリアルみたいなものを作ってみたくてやりました 途中で辞めてしまいましたが Ruby on Rail …