导轨上的多级选择 [英] Multilevel select on rails
本文介绍了导轨上的多级选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在多个模型之间使用多选下拉
I want to use multiple select drop-down between several models
我有这个:
class Report < ActiveRecord::Base
belongs_to :region
end
class City < ActiveRecord::Base
has_many :regions
end
class Region < ActiveRecord::Base
has_many :reports
belongs_to :city
end
当我选择一个城市时,我想从所选城市中提取项目列表并将其显示在下一个下拉列表中.如何创建下拉菜单之间的关系?谁能帮我?
when I select a city I want to pull list of items from selected city and show it on next drop-down list. How do I create relationships between drop-down menus ? Can anyone help me?
谢谢.
推荐答案
这个 link 可以帮助您做到这一点.
This link may help you in doing it.
Rails 2 + 原型
app/models/cities.rb
class City < ActiveRecord::Base
has_many :regions
has_many :reports, :through => :regions # this is newly added
end
cities_controller
class CitiesController < ApplicationController
def index
@cities = City.find(:all)
@regions = Region.find(:all)
@reports = Report.find(:all)
end
def update_regions
# updates regions and reports based on city selected
city = City.find(params[:city_id])
regions = city.regions
reports = city.reports
render :update do |page|
page.replace_html 'regions', :partial => 'regions', :object => regions
page.replace_html 'reports', :partial => 'reports', :object => reports
end
end
def update_reports
# updates reports based on region selected
region = Region.find(params[:region_id])
reports = region.reports
render :update do |page|
page.replace_html 'reports', :partial => 'reports', :object => reports
end
end
end
_reports.html.erb
<%= collection_select(nil, :report_id, reports, :id, :title,
{:prompt => "Select a Report"}) %>
_regions.html.erb
<%= collection_select(nil, :region_id, regions, :id, :name,
{:prompt => "Select a Region"},
{:onchange => "#{remote_function(:url => {:action => "update_reports"},
:with => "'region_id='+value")}"}) %>
<br/>
index.html.erb
<%= javascript_include_tag :defaults %>
<%= collection_select(nil, :city_id, @cities, :id, :name,
{:prompt => "Select a City"},
{:onchange => "#{remote_function(:url => {:action => "update_regions"},
:with => "'city_id='+value")}"}) %>
<br/>
<div id="regions"><%= render :partial => 'regions', :object => @regions %></div>
<div id="reports"><%= render :partial => 'reports', :object => @reports %></div>
这篇关于导轨上的多级选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文