On 1/5/07, James Edward Gray II <james / grayproductions.net> wrote: > On Jan 5, 2007, at 11:40 AM, Josselin wrote: > > > I have an account_controller object .. when the user 'submit the > > form, the 'confirm' method is called, but 2 buttons can confirm > > so I have to check upon the submit value... which I do > > each submit button CANNOT call a different method in my object.. > > Are you sure about that? ;) > > class AccountController < ApplicationController > # ... > > def confirm > send("confirm_for_#{params[:submit_button]}") > end > > # ... > > private > > def confirm_for_button_one_name > # ... whatever ... > end > > def confirm_for_button_two_name > # ... whatever ... > end > > # ... > end > > Just a thought. Not that there is anything wrong with your case > statement though. > > James Edward Gray II I wanted to write that this is not a good example -- the case statement would be more readable and probably even faster. Then I realized that the situation changes if somebody wants to subclass this and add another button. Just add another method and it's done. With the case statement it wouldn't be that easy. Then I was thinking that if the params[:submit_button] contained the whole method name, the confim method would be nicer. The drawback is that the way it is now provides a bit of security -- it's not possible to call any method, just a limited subset. It would be possible to check whether the param is in a specified set, but that would break extensibility (or a means to extend the set would be needed).