I've also tried <%= form_for @thread, :as => :thread %>
and this results in the error: undefined method `forum_threads_path' for #<#<Class:0x00000103a45098>:0x000001039575a0> That would seem to be a bug to me. Shouldn't form_for be using :as => :thread to name that route appropriately? -M On May 23, 2010, at 2:52 AM, Michael Jurewitz wrote: > Hi guys, > > I'm having trouble getting named routes and form_for to play nicely in quite > the way I would expect. Here's a quick summary of what I've got going on: > > Named route: > resources :thread, :class_name => "forum_thread" > > Controller name: > forum_thread_controller > > Model object: > forum_thread > > > In both my new and edit actions I'm setting up an @thread variable: > @thread = ForumThread.new > > 1.) My first attempt at writing the form_for looked something like this: > > <%= form_for @thread do |f| %> > ..... > <% end> > > This didn't work because @thread tries to use a path involving the string > "forum_thread", which doesn't have a matching route and which I don't want. > > > 2.) So that's fine, I figured I'd just use named routes. So I tried this: > > <%= form_for @thread, :as => :thread, :url => thread_path(@thread) do |f| %> > .... > <% end > > > This works for edit actions, but not for new actions. On new I get the > following error: > > No route matches {:action=>"destroy", :controller=>"forum_thread", > :id=>#<ForumThread id: nil, .....>} > > > 3.) So then I tried: > > <%= form_for @thread, :as => :thread, :url => threads_path(@thread) do |f| %> > .... > <% end > > > This doesn't work for edit, and sorta works for new except it outputs the > following HTML, which makes the respond_to block unhappy: > > <form action="/thread?format=" class="thread_new" id="thread_new" > method="post">.... > > > 4.) So then I tried: > > <%= form_for @thread, :as => :thread, :url => threads_path do |f| %> > .... > <% end > > > Now everything works for new, but not for edit! (Because the ID of the > element being edited isn't emitted as part of the action): > > <form action="/thread" class="thread_edit" id="thread_edit" method="post"> > > > So: > 1. Is there some way to use a named route that uses a custom class name and > still be able to reuse my form partial for both new and edit actions? Or am > I stuck writing two forms? > 2. Is the error I received in #2 a bug in Rails 3 or expected behavior? > 3. Is the erroneous output in #3 a bug in Rails 3 or expected behavior? > > > My sincere thanks in advance for your help! > > -Jury -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.