basic select drop down returning the right params

Anyone mind helping with he following, whatever I do I can't get it to work quite right, I want the selection dropdown to show a list of enquiries maybe by Enquiry.firstname and when selected the show action to display the enquiry, I know this should be mega easy but I can't get it to work with colleciton select.

controller index action

anyone? I just need a basic dropdown which passes the id of the selected enquiry.

bingo bob wrote:

Anyone mind helping with he following, whatever I do I can't get it to work quite right, I want the selection dropdown to show a list of enquiries maybe by Enquiry.firstname and when selected the show action to display the enquiry, I know this should be mega easy but I can't get it to work with colleciton select.

controller index action ------------------

  def index     @enquiries = Enquiry.find(:all, :order => 'created_at ASC')   end

view ---

<% form_tag :controller => 'enquiries', :action => 'show', :id => @enquiry do %>

<% form_tag { :controller => 'enquiries', :action => 'show' } %> <%= collection_select :enquiry, :id, @enquiries, :id, :firstname %>

<%= submit_tag "Show" %>

controller view action ----------------

def show

@enquiry = Enquiry.find(params[:enquiry][:id]

end

Try that.

Hope it helps. NOTE: I didn't test it, but I'm pretty sure it's right, which means you may have to tweak it. :wink:

Also of note, if you want something different to show up in the select, you can add a method to your model that returns the proper text and substitute that for :firstname in your collection select.

i.e. class Enquiry    def last_comma_first       self.lastname.to_s + ', ' + self.firstname.to_s    end end

<%= collection_select :enquiry, :id, @enquiries, :id, :last_comma_first %>

Cheers, Darrik

Darrick,

That's great thanks, I tried this before (or something very similar and it worked)...Here's the problem though...

That show action works your way from the collection select drop down...

However.... When I do it this it brakes something else (the show action after I've editted a form).

e.g this URL.

http://localhost:3000/enquiries/show/5

I see why it's broken I just don't know how to fix it...so it's like I've got two situations, one from the dropdown and one from a regular form and I'd like the show action to deal with both?

Hope that makes sense... BTW I love the enhancement in my model which I did giving first initial then lastname...

Any ideas?

any ideas, does my show action need to change, or the collection select, OR the params passed from when I move to the show action from the edit ?

bump...

bingo bob wrote:

Darrick,

That's great thanks, I tried this before (or something very similar and it worked)...Here's the problem though...

That show action works your way from the collection select drop down...

However.... When I do it this it brakes something else (the show action after I've editted a form).

e.g this URL.

http://localhost:3000/enquiries/show/5

If you're using RESTful routes, that url should be: http://localhost:3000/enquiries/5/show

Not sure how you're getting to the other. Are you using the url generator methods? e.g. enquiry_url(@enquiry) and friends?

If you use the url generator methods for all of your links, you shouldn't have any problems. Use these as parameters to redirect_to and link_to.

<%= link_to 'list', enquiries_path %> ... or ... redirect_to enquiry_url(@enquiry)

How are you generating the url you listed above?

Cheers, Darrik

What makes you think your question is more important than everyone else's?