私はState
モデルとモデルhas_many :cities
を持ってcity
いbelongs_to :state
ます。州のリストを表示したいのですが、ユーザーが州をクリックしたときにajax呼び出しを行って、その州に属する都市を下に表示します。
これはjQueryを使用して実行でき、パーシャルなしで実行できると確信しています。いくつかの例と解決策を思い付くのに苦労しています。
これが私が最初にどのように見せたいかです:-アラバマ-アラスカ-アーカンソー-など。
次に、誰かが「アラスカ」をクリックすると、リストは次のように更新されます。-アラバマ-アラスカ-アンカレッジ-フェアバンクス-ジュノー-アーカンソー
どんな助けでも大歓迎です!
編集
さて、私はjQueryを追放してきましたが、次のコードを思いつきました。州にそれぞれの都市を個別に表示させることはできません。現状では、いずれかの州をクリックすると、最初の州の都市のみが表示されます。
コードは次のとおりです。
<script>
$(function(){
$('#city').hide();
$('.toggle').toggle(function(){
$('#city').fadeIn(100);
},
function(){
$('#city').fadeOut(100);
});
});
</script>
<%= render "layouts/header"%>
<table class="state_list">
<% @states.in_groups_of(1, false).each do |state| %>
<tr>
<% for state in state %>
<td>
<div class="toggle"><h3><%= state.name %><br /></h3></div>
<% @cities.each do |city| %>
<% if city.state.id == state.id %>
<div id="city"><%= link_to city.name, cities_path(:city_id => city.id) %> (<%= city.posts.where(:published => true).count %>)<br />
<% end %>
<% end %>
</div>
</td>
<% end %>
</tr>
<% end %>
</table>
繰り返しになりますが、フィードバックをいただければ幸いです。