I’ve got a very simple Rails 3 app with a User model run by Devise and a Notes model. Right now the url and routing looks like this:
# url
/users/MEMBERNAME/notes/TITLE-OF-NOTE
# routing
resources :users do
resources :notes
end
But I would like the urls to look like this, how would the routing look like in this case?
# url
/MEMBERNAME/TITLE-OF-NOTE
Update:
Thanks, now I discovered a new problem though. In my forms I have this code:
<%= form_for([@user, @note]) do |f| %>
and in my controller I redirect like this:
format.html { redirect_to([@user, @note], :notice => 'Note was successfully created.') }
In both those cases when I use @user, @note the old urls are still present. Do you know how to translate the form and the redirects to use the member/title structure?
Thanks in advance!
You can use a custom route here:
Hope this helps!
Update:
To use the newly created named route:
So, the general rule is if you pass an array of active_record objects like below to #redirect_to, #url_for or #form_for methods, the #polymorphic_url method is called internally, and generates the standard RESTful route.