「me」/me セクションの下にいくつかのルートの名前空間を作成して、この名前空間の下にすべてのユーザー プロファイル/アカウント ベースのものを配置して、よりクリーンなルーティングを実現しようとしています。
これにアプローチする最良の方法は何ですか?デフォルトの REST ルーティング ( profiles/1/edit ) を書き換えると、フォームが更新されないなどの問題がいくつか発生することがわかりました。
ルート
get "/me/profile" => "profiles#show", :as => :my_profile
get "/me/profile/:what" => "profiles#edit", :as => :my_profile_edit
post "/me/profile/:what" => "profiles#edit"
プロフィールコントローラー
def edit
@profile = current_user.profile
if ["basics", "location", "details", "photos"].member?(params[:what])
render :action => "edit/edit_#{params[:what]}"
else
render :action => "edit/edit_basics"
end
end
def update
@profile = current_user.profile
@profile.form = params[:form]
respond_to do |format|
if @profile.update_attributes!(params[:profile])
format.html { redirect_to :back, :notice => t('notice.saved') }
else
format.html { render action => "/me/profile/" + @profile.form }
end
end
end
上記のように感じた場合は、REST の原則に反して非常に悪い方向に進んでいます。望ましい結果をより良い方法で達成するにはどうすればよいでしょうか?