リソースを新規に作成する場合に、既存のものを再利用して作成したい場合は良くあると思います。 そんな時は、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_us er).all 5 end
そしてposts/new.
1 <% if @posts.present? %> 2 <form action=<%= new_post_path %> method="GET"> 3 <%= select_tag :id, options_fo r_select(@posts.map{|i| [i.title, i.id]}) %> 4 <%= submit_tag '読み込む' %> 5 </form> 6 <% end %>
こんな感じに、テンプレートの読み込みフォームを作ります。
これで完了です。
Ajaxで posts/new/
newアクションが:idで指定したリソースをテンプレートとして利用して新規にリソースを作成するというのは、標準的な挙動になっても良い気がします。
posted by
genki
on Sat 21 Mar 2009
at 13:47