Cool :) Good to hear. In perl, we used to pass the id of objects we want to methods (ie. search) and have a result given back. I know these days, we pass objects instead of primary ids which is cool :)
Cheers:D Gordon Yeong On 8 February 2011 17:41, Jim Ruther Nill <[email protected]> wrote: > Congratulations on solving your problem. However, I just want to clarify > one thing regarding named routes. > (Just to help users reading the thread) > > What Hendra said isn't wrong. You can pass anything to part_url and it > will be passed to the controller as > params[:id]. To make our codes easier to read, the core developers allowed > us to pass an object to part_url. > Someone correct me if I'm wrong, but I believe passing an object to > part_url uses the object's to_param method which > returns the id by default. So part_url(@part) and part_url(@part.id) > should return the same string if you didn't > override @part's to_param method. > > > On Tue, Feb 8, 2011 at 11:57 AM, ct9a <[email protected]> wrote: > >> hi, all, >> >> I figured out why. >> I was updating my source codes and i actually put another call for >> parts_url in my notification_mailer.rb under the model subdirectory. >> >> Lesson of the day - never call *_url within your model especially when >> the object does not belong to the class where the model is being >> called. >> >> hahah >> >> >> @hendra - thanks for your reply but i doubt passing @part.id would >> work as part_url was expecting an object... >> >> >> >> On Feb 8, 2:50 pm, Hendra Gunawan <[email protected]> wrote: >> > maybe you can try this: >> > >> > part_url(@part.id) >> > >> > >> > >> > >> > >> > >> > >> > On Tue, Feb 8, 2011 at 8:19 AM, ct9a <[email protected]> wrote: >> > > hi all, >> > >> > > in my application, I am trying to send out a notification to users. >> > >> > > I can call part_url(@part) from the calling method in the controller >> > > BUT when I try to put the value of the parts_url into a notification >> > > object, it fails. >> > > Here's the message: >> > > ActionController::RoutingError (part_url failed to generate from >> > > {:controller=>"parts", :action=>"show"} - you may have ambiguous >> > > routes, or you may need to supply additional parameters for >> > > this route. content_url has the following required parameters: >> > > ["parts", :id] - are they all satisfied?): >> > > (eval):17:in `part_url' >> > > app/models/notification_mailer.rb:11:in `message_to_seller' >> > > app/models/notification_observer.rb:3:in `after_update' >> > > /usr/local/lib/ruby/1.9.1/observer.rb:186:in `block in >> > > notify_observers' >> > > /usr/local/lib/ruby/1.9.1/observer.rb:185:in `each' >> > > /usr/local/lib/ruby/1.9.1/observer.rb:185:in `notify_observers' >> > > /usr/local/lib/ruby/gems/1.9.1/gems/after_commit-1.0.8/lib/ >> > > after_commit/connection_adapters.rb:12:in `transaction_with_callback' >> > > app/controllers/parts_controller.rb:381:in `block in >> > > _send_message_to_seller' >> > > app/controllers/parts_controller.rb:333:in `_send_message_to_seller' >> > > app/controllers/parts_controller.rb:52:in `send_message' >> > >> > > Here's what the method looks like in myApp/app/controllers/ >> > > parts_controller.erb. >> > >> > > >> --------------------------------------------------------------------------- >> ------ >> > > def send_message >> > > @part = Part.find(params[:id]) >> > >> > > if ( not params[:type].nil? and params[:type].eql? >> > > 'compose_message_to_friend' ) >> > > @page_title = 'Recommendation for "' + @part.title + '"' >> > >> > > # composing message to friend >> > > _send_message_to_friend(@part) >> > > else >> > > @page_title = 'Enquiry for "' + @part.title + '"' >> > > puts "the url here is " + part_url(@part) <-- the value >> > > shows just ok here! >> > >> > > # composing message to seller >> > > _send_message_to_seller(@part) >> > > end >> > > end >> > >> > > def _send_message_to_seller(part) >> > > @notification = Notification.new(params[:notification]) >> > >> > > @user_message = params[:notification][:message] >> > >> > > params[:notification][:created_by] = 'part enquirer' >> > > params[:notification][:updated_by] = 'part enquirer' >> > >> > > respond_to do |format| >> > > if @notification.save >> > > puts "We are inside the url is now " + %{Hi, >> > > "#{part_url(part)}" onto your browser. } <-- the value shows just ok >> > > here! >> > >> > > @message = %{Hi, "#{part_url(part)}" onto your browser. } >> > >> > > @notification.message = @message >> > > @notification.save <!-- ERROR thrown here >> > > end >> > > end >> > >> > > >> --------------------------------------------------------------------------- >> ------ >> > >> > > Any ideas? Thank you :) >> > >> > > -- >> > > 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 >> [email protected]. >> > > To unsubscribe from this group, send email to >> > > [email protected]. >> > > For more options, visit this group at >> > >http://groups.google.com/group/rubyonrails-talk?hl=en. >> >> -- >> 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 [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-talk?hl=en. >> >> > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com > > -- > 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 [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

