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

執筆者:

関連記事

no image

Rails3.2でCoffeeScriptをerbテンプレートとして使う件

目次1 リンクのリモートオプションをTrueにする(フォーマットをjsにする設定をしても必要)2 コントローラーでjsフォーマットを有効にする3 viewディレクトリ以下に.js.coffee拡張子で …

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

  Rails3.2でTwitterBootstrap導入のあれこれ sass-rails-bootstrapとsimple_formを使っている Rails3.2でCoffeeScript …

no image

Strong Parameters関連のデバッグ

関連するモデルの保存がうまく出来ない場合、本体のモデルの保存はうまく出来ているのでエラーは出ない。 サーバーのログをみると、 Unpermitted parameters という …

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

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

Ruby+guardでSass+Compass+CoffeeScriptの自動コンパイル環境を整える

    Ubuntu12.04.1でCoffeeScriptの自動makeとブラウザの自動リロード~guard-coffeescript すでにCoffeeScriptを自動Mak …