Forum: Ruby on Rails Creating a Query and then a select box based off query results

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1be99973c9076288947e8312e8bcc2f6?d=identicon&s=25 curlysue282002@yahoo.com (Guest)
on 2008-11-18 11:41
(Received via mailing list)
Hello,

I am a newbie here and was hoping someone had some experience and
suggestions on how to accomplish the below task:

I would like to figure out how to give my users a prepopulated list
based off there selection.  I am creating am application that users
specific servers and would like to show them the list of suppliers who
build these servers.  For example, if they chose a server X200 the
next box would then prepopulate its self with the supplier thats is
responsible for building this server. Anyone have any idea how I would
go about doing this.  I have a query that pulls the data but I have no
idea what my next steps should be.

Thank You,
2d8132658d56e51f19ace1c68e48b6aa?d=identicon&s=25 Thorsten Mueller (thorsten)
on 2008-11-18 12:23
(Received via mailing list)
Roughly you will change the view when the user selects a server.
Use the onchange (not onclick) event of the select box
to trigger the next view.
Obviously that should be an Ajax call, since there is no
need to update the whole page.

something similar, a category select with subcategories:

the view with the main category select:

<select name="category_main" id="category_main" style="float:left;
width:200px;" onchange="<%= remote_function(:url =>
sub_category_depot_product_url(@product), :with => "'category_id=' +
this.value") %>">
           <option value='666'>Kies een categorie</option>
          <%= options_from_collection_for_select(@categories, "id",
"title", (@product.category ? @product.category.category_id : 0)) %>
        </select>

the action to get the sub categories:

  def sub_category
    @product = Product.find(params[:id])
    @categories = Category.find(:all, :order => "title
ASC", :conditions => "category_id = #{params[:category_id]} AND
published=1")
    respond_to do |format|
      format.js
    end
  end

the ajax response used by this action:

page.replace(:category_sub, :partial => 'depot/products/
sub_category_select', :locals => {:categories => @categories, :product
=> @product})

and the partial used by the ajax response:

<select name="product[category_id]" id="category_sub"
style="float:left; width:200px; margin-left:8px;">
  <%= options_from_collection_for_select(categories, "id", "title",
product.category_id) %>
</select>
1be99973c9076288947e8312e8bcc2f6?d=identicon&s=25 Christie Clark (Guest)
on 2008-11-18 20:34
(Received via mailing list)
Thanks, this pretty helpful. I am going through this step by step.  Had
no idea even how to begin this or even what to call it when try to find
a solution

--- On Tue, 11/18/08, Thorsten Müller <thorsten@80beans.com> wrote:
From: Thorsten Müller <thorsten@80beans.com>
Subject: [Rails] Re: Creating a Query and then a select box based off
query results
To: "Ruby on Rails: Talk" <rubyonrails-talk@googlegroups.com>
Date: Tuesday, November 18, 2008, 6:22 AM

Roughly you will change the view when the user selects a server.
Use the onchange (not onclick) event of the select box
to trigger the next view.
Obviously that should be an Ajax call, since there is no
need to update the whole page.

something similar, a category select with subcategories:

the view with the main category select:

<select name="category_main" id="category_main"
style="float:left;
width:200px;" onchange="<%= remote_function(:url =>
sub_category_depot_product_url(@product), :with =>
"'category_id=' +
this.value") %>">
           <option value='666'>Kies een categorie</option>
          <%= options_from_collection_for_select(@categories,
"id",
"title", (@product.category ? @product.category.category_id : 0))
%>
        </select>

the action to get the sub categories:

  def sub_category
    @product = Product.find(params[:id])
    @categories = Category.find(:all, :order => "title
ASC", :conditions => "category_id = #{params[:category_id]} AND
published=1")
    respond_to do |format|
      format.js
    end
  end

the ajax response used by this action:

page.replace(:category_sub, :partial => 'depot/products/
sub_category_select', :locals => {:categories => @categories,
:product
=> @product})

and the partial used by the ajax response:

<select name="product[category_id]" id="category_sub"
style="float:left; width:200px; margin-left:8px;">
  <%= options_from_collection_for_select(categories, "id",
"title",
product.category_id) %>
</select>
This topic is locked and can not be replied to.