[Ror-es] Select Helper dependientes

Antonio Pardo antonio.pardo at gmail.com
Mon Jul 9 20:53:54 GMT 2007


Buenas,

El Monday 09 July 2007 15:11:13 William Betancur escribió:
> yo intente utilizar este plugin y no me funciono, por favor nos explicas
> como lo lograstes?
> puedes hacer tres selects dependientes?
> y en un formulario de consulta se carga los selects con los valores que
> son?

si, la prueba que he hecho ha sido con tres modelos. Ahí va un ejemplo, la 
vista:

<%= select 'country', 'id', Country.find(:all).map {|x| [x.name, x.id]} %>
<div id="cities">
  <%= select 'city', 'country_id', Country.find(@country.id).cities.map
    {|x| [x.name, x.id]} %>
</div>
<div id="houses">
  <%= select 'house', 'city_id', City.find(@city.id).houses.map {|x| [x.name, 
x.id]} %>
</div>

@country viene de seleccionar el país por defecto que quieras que aparezca en 
el select.

Los modelos son algo así:

class Country < AR::Base; has_many :cities; end
class City < AR::Base; belongs_to :country; has_many :houses; end
class House < AR::Base, belongs_to :city; end

Y los métodos del controlador:

def on_country_id_change
  render :update do |page|
    @cities = Country.find(params[:dom_value]).cities
    @houses = City.find(params[:dom_value]).houses
    page.replace_html 'cities',
      :inline => "<%= select 'city', 'country_id', @cities.map {|o| [o.name, 
o.id]} %>"
    page.replace_html 'houses',
      :inline => "<%= select 'house', 'city_id', @houses.map {|o| [o.name, 
o.id]} %>"
  end
end

def on_city_country_id_change
  render :update do |page|
    @houses = City.find(params[:dom_value]).houses
    page.replace_html 'houses',
      :inline => "<%= select 'house', 'city_id', @houses.map {|o| [o.name, 
o.id]} %>"
  end
end

Nos vemos

-- 
http://www.theprimusproject.com/


More information about the Ror-es mailing list