I've been following the rails/osx tutorial at http://developer.apple.com/tools/rubyonrails.html This develops a simple application with expenses and accounts. Near the end of the tutorial, there is a view which allows expenses to be added to an account. This view has the "parent" @account rendered, then iterates throught @account.expenses to display the existing accounts, then has a form. <%= start_form_tag :action => 'record', :id => @account %> <p> On <%= date_select 'expense', 'paid_on', :order => [:month, :day, :year] %> to <%= text_field 'expense', 'payable_to', :size => 25 %> in the amount of $<%= text_field 'expense', 'amount', :size => 9 %> </p> <%= submit_tag 'Record!' %> <%= end_form_tag %> Which then calls the record action in the controller: def record Account.find(params[:id]).expenses.create(params[:expense]) redirect_to :action => 'show', :id => params[:id] end and all is well. Very neat. Except when you try to validate something in the new expense. I've tried replacing the hand coded expense form with the partial in /expenses/form (which has the "error_messages_for 'expense' line"), but the validation messages don't show up. The record *is* validated, but the rendering of the error messages (and the nice red lines!) don't show. I would be grateful for help! I wonder if it's due to the page being unable to find the expenses instance... Thanks very much Chris
on 2006-05-29 14:18
on 2006-05-29 17:43
it's because this case is not handled in the "record" function. You sould have more something like: def record if Account.find(params[:id]).expenses.create(params[:expense]) redirect_to :action => 'show', :id => params[:id] else render :action => modifyAccount end end the idea is to say "everything ok"? go there Something wrong? display message You can check how the scaffold do that.