読者です 読者をやめる 読者になる 読者になる

Railsでadminとかのnamespaceでくくわれたリソースへアクセスするときのform_forがなんかめんどかったときの対処

どゆことかというと、

config/routes.rb的に、

namespace :admin do
  resources :users
end

ときとかの、newアクションやeditアクションで用いられる、

scaffold的にいうと、_form.html.erb内のform_forメソッドは、

普段は、

form_for(@user) do |f|

とかって感じで、

オブジェクトの指定からさらに新規(create)なのか、

更新(update)なのか判別して、

url(行き先のアクション)までセットしてくれてる訳ですが、

namespaceを使って階層になってると、

form_for(@user, :url=>admin_user_path(@user)) do |f|

とかって、

行き先のアクションを直接指定することもできるけど、

こうすると新規と更新で別のパスを指定する必要が出てきて、

せっかくの_form.html.erb切り出して共通化してたのが、台無し!になるから、

どうしたものかーと思っていたら、

form_for([:admin, @user]) do |f|

って感じで配列で階層を表現できるらしい!

助かりました!

参考にしたページ