How to pass the selected value to controller through 'link_to'?

31 views
Skip to first unread message

Marcos Serpa

unread,
Apr 30, 2012, 11:52:57 AM4/30/12
to rubyonra...@googlegroups.com

Hello, guys.

I'm searching for days, but I'm not finding a way to do this. How can I pass like an argument by 'link_to' the selected value of a selected_tag? Like this:

<%= select_tag 'cities', options_from_collection_for_select(@cities, 'id', 'city') %>

<%= link_to "See", deals_path(:id => ??) %>

Just to clarify, all the code below is working perfectly. I just don't know what I put in '??' on the ":id => ??" to pass the selected value of the select_tag.

To make easy in your minds, remember the Groupon site. The deals page. When you choose a place, then the deals showed to you is only the deals of that place. Exactly what I want...

OBS: This is not a form. Just an index page that show a list of things of the database.

Got this, guys? Can you help me?

Hug!

Javier Quarite

unread,
Apr 30, 2012, 4:45:54 PM4/30/12
to rubyonra...@googlegroups.com
I guess that instead of a link_to, should be a form.

You should do a form_tag and inside that the selector, so when you click on the "View" button it will make a request of the selected option.
Now if you want to do all of that without "refreshing" the browser, you could do an ajax call and you have to add :remote=>true to your form_tag options

If you want to add the ID to that link (html) you will have to add some javascript in order to update the link value

JavierQ

Robert Walker

unread,
Apr 30, 2012, 4:55:36 PM4/30/12
to rubyonra...@googlegroups.com
Marcos Serpa wrote in post #1058999:
> I'm searching for days, but I'm not finding a way to do this. How can I
> pass like an argument by 'link_to' the selected value of a selected_tag?
> Like this:
>
> <%= select_tag 'cities', options_from_collection_for_select(@cities,
> 'id',
> 'city') %>
>
> <%= link_to "See", deals_path(:id => ??) %>
>
> Just to clarify, all the code below is working perfectly. I just don't
> know
> what I put in '??' on the ":id => ??" to pass the selected value of the
> select_tag.

Okay, the first thing to realize is that a selection made by the user
using a select control does not notify the server of any change. The
browser downloads the page. The user makes their selection and "posts"
the form back to the server. There is nothing you can do server-side to
detect the selection when it actually occurs.

You will need to handle this on the client side using JavaScript. There
are multiple ways to handle that. I'll leave that as an exercise for
you. If you have any specific questions during the implementation of
that then please ask.

--
Posted via http://www.ruby-forum.com/.
Reply all
Reply to author
Forward
0 new messages