How to Pass a Selected Option Value of select_tag from One Partial to Another

Hi,

I’m running Rails 2.3.5 & Ruby 1.8.7 on Windows XP.

I have two partials:

  1. File app\views\warehousing_index.html.erb has

    <%= select_tag(:filter_by_category, "-Select a category-
" +

options_from_collection_for_select(Categories.find(:all, :order =>
‘name’), :name, :name)) %>

<%= render :partial => ‘warehousing/entry’, :locals =>
{:filter_by_category => “Hello World”} %>

2. File app\views\warehousing_entry.html.erb has

Selected category is <%= filter_by_category %>

On the displayed page, it shows:

  Selected category is Hello World

That means the string “Hello World” in variable filter_by_category is
indeed passed from one partial to the other. For my project, I want
to pass the selected option value from the select_tag to partial
_entry.html.erb, i.e. in file _entry.html.erb, for line
<%= render :partial => ‘warehousing/entry’, :locals =>
{:filter_by_category => ???} %>
what should I put in for “???”.

Thanks for any help that you could offer.
Hoca

Hoca wrote in post #955056:

Hi,

I’m running Rails 2.3.5 & Ruby 1.8.7 on Windows XP.

Why on earth are you doing Rails development on Windows? At least get a
*nix VM.

I have two partials:

  1. File app\views\warehousing_index.html.erb has

    <%= select_tag(:filter_by_category, "-Select a category-
" +

options_from_collection_for_select(Categories.find(:all, :order =>
‘name’), :name, :name)) %>

<%= render :partial => ‘warehousing/entry’, :locals =>
{:filter_by_category => “Hello World”} %>

2. File app\views\warehousing_entry.html.erb has

Selected category is <%= filter_by_category %>

On the displayed page, it shows:

  Selected category is Hello World

That means the string “Hello World” in variable filter_by_category is
indeed passed from one partial to the other. For my project, I want
to pass the selected option value from the select_tag to partial
_entry.html.erb, i.e. in file _entry.html.erb, for line
<%= render :partial => ‘warehousing/entry’, :locals =>
{:filter_by_category => ???} %>
what should I put in for “???”.

It’s not possible, because at the time the partial is rendered, the user
has not yet had a chance to select anything – that is, by the time the
user sees the page in the browser, _entry has already been rendered and
it is now too late to change it.

Therefore, you’d need to use Ajax to send a request to the server which
would re-render _entry when a new category is selected.

Thanks for any help that you could offer.
Hoca

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Hi Marnen,

Thanks so much for your suggestion. I’ll try another approach then.

Hoca.