リソースを新規に作成する場合に、既存のものを再利用して作成したい場合は良くあると思います。 そんな時は、newアクションで:idを受け取れるようにして、 以下のようにすると、簡単に実現出来ます。

   1    def new
   2      @post = Post.new
   3      @post.attributes = Post.find(params[:id]).attributes if params[:id]
   4      @posts = Post.for_user(current_user).all
   5    end

そしてposts/new.html.erbの中で

   1  <% if @posts.present? %>
   2  <form action=<%= new_post_path %> method="GET">
   3    <%= select_tag :id, options_for_select(@posts.map{|i| [i.title, i.id]}) %>
   4    <%= submit_tag '読み込む' %>
   5  </form>
   6  <% end %>

こんな感じに、テンプレートの読み込みフォームを作ります。 これで完了です。 Ajaxで posts/new/1 のようなURLにGETで遷移するようにした方が格好がいいかもしれません。

newアクションが:idで指定したリソースをテンプレートとして利用して新規にリソースを作成するというのは、標準的な挙動になっても良い気がします。

posted by Png genki on Sat 21 Mar 2009 at 13:47

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry1371
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ