0

当我选择一个国家/地区时,如何在搜索中创建一个 ajax,它会显示我在所选国家/地区拥有的所有州

我正在尝试创建一个显示,当我选择国家时自动显示所有选择国家的州

我的桌子

Countries

  |id| |country_name|
   1    'USA'
   2     'Peru'

States

   |id| |state_name|
    1      Alabama
    2      Machupicchu

Country_States
    |id|  |country_id|   |state_id|
     1       1              1
     2       2              2

我的控制器

 class Country_StatesController < ApplicationController
  def conditional

    @countries = Country.find(:all)
    @states= State.find(:all)

    @selected_country = Country.find_by_id(params[:countries])  if params[:countries].to_i
    @selected_state = State.find_by_id(params[:states])  if params[:states].to_i
    @search= CountryState.find(:all,:conditions=> ['state_id','country_id' ],params[:states],params[:countries] )
  end
 end

我的观点

<% form_tag :controller=>"country_States",:action=>"conditional" do %>

    <%= select_tag "countries", options_for_select(@countries.collect {|t| [t.state_name.to_s ,t.id]})  %>

    <%= select_tag "states", options_for_select(@states.collect {|t| [t.state_name.to_s ,t.id]}, params[:search].to_i ) %>

    <%= submit_tag "Search", :name => nil %>
<% end %>

我发现了这样的东西

  <%= collection_select :selection, :level, User::LEVELS, :to_s, :to_s, {},
     {:onchange => remote_function(
      :url => {:action => "updatelevel", :controller => "user", :id=> user.id},
      :with => "'level_id='+this.value"
    )
  }
  %>

我会很感激帮助。

4

2 回答 2

1

要列出属于给定国家的所有州,首先要建立以下关系:

class Country < ActiveRecord::Base
  has_many :states
end

class State < ActiveRecord::Base
  belongs_to :country
end

然后在控制器中,您可以像这样调用所有状态:

@country = Country.find(params[:id])
@states = @country.states #this will be a hash of all states that belong_to @country

在视图中,您可以创建这样的列表(或使用表格,具体取决于您希望它的格式):

<ul>  
<% @states.each do |state| %>
  <li>
    <%= state.name %>
  </li>
  #etc
<% end %>
</ul>
于 2013-09-27T18:07:13.197 回答
0

我在这里找到了一个非常简单的答案:

http://pullmonkey.com/2008/03/30/dynamic-select-boxes-ruby-on-rails/

非常有用且具有描述性。

于 2013-09-28T05:55:08.200 回答