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
-,

執筆者:

関連記事

erbで要素のidやclassを指定するならcontent_tag_forとdiv_forが便利だった

KEN_ALL.CSVを使ってRailsで郵便番号を検索するサイトを作る1

  放置しっぱなしだったKEN_ALL.CSVで簡単に郵便番号を検索できるサイトを作ってみた 参考 KEN_ALL.CSVを使える形にする 郵便番号データダウンロード 目次1 KEN_ALL …

no image

Rails3でrtfを出力

  rtfはリッチテキストフォーマット、ms wordなどで扱えるほか、標準添付のwordpadなどでも扱える config/initializers/mime_types.rbを編集 [c …

no image

Rubyで対話型のコマンドを実行する~pty expect

  Rubyから普通のLinuxコマンドを実行するのはコマンドで実行できる たとえば、Linuxコマンドがなんらかの入力を要求するときはexpectライブラリを使えばいいらしい www.ru …

Backbone.jsからRails3.2へのPUTに対して204(no content)が返ってくる問題

By: Bernardo Chang – CC BY 2.0   UPDATEするときRailsはデフォルトでJSONには何も返さないのがデフォルトぽい [crayon-5baa …