RubyOnRails

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

投稿日:

 

 

前提

今度こそ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
-,

執筆者:

関連記事

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

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

no image

Rails3.2で関連するモデルのフォームをあわせて表示~accepts_nested_attributes_for & fields_for

Railsで関連するモデルのフォームを表示するメモ またハマったので手順をメモ 目次1 Model2 View3 Controllerでもどこでも Model [crayon-5994399e9408 …

no image

Rails3でrtfを出力

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

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

no image

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

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