0
オプションを選択した後、select_tag
を更新するためにajax
コールを使用しますが、idと値で間違ったhtmlコードを生成しています。select2の宝石を使ってAJAXを実行するHtmlコードの問題
テーブル:
|departaments|
|id| |name|
1 dep1
2 dep2
|provinces|
|id| |name| |departament_id|
1 pr1 1
2 pr2 1
コントローラー:
def new
@client= Client.new
end
def province_update
@provinces = Province.where(departament_id: params[:departament_id])
end
ビューnew.html.erb
<script>
$(document).ready(function() {
$(".search_select").select2();
});
</script>
<script>
$(function() {
$('#departament_id').on('change', function() {
$.get("province_update", {
departament_id: $('#departament_id').val()
}, function(e) {
if (e)
$("#province_id").select2().html(e);
})
});
});
</script>
Departament: <%= select_tag :departament_id,options_from_collection_for_select(@departaments, 'id', 'name') %>
Province: <%= select_tag :province_id) %>
Javascriptをprovince_update.rjs
$("#province_id").html('<%= j render partial: "provinces_result" %>')
部分_provinces_result.erb
<%= select_tag :province_id,options_from_collection_for_select(@provinces, 'id', 'name')
ログ:
Started GET "/clients/province_update?departament_id=6" for 127.0.0.1 at 2016-06-22 17:03:55 -0500
Processing by ClientsController#province_update as */*
Parameters: {"departament_id"=>"6"}
Province Load (0.1ms) SELECT `provinces`.* FROM `provinces` WHERE `provinces`.`departament_id` = 6 ORDER BY name ASC
Rendered _provinces_result.erb (2.3ms)
Rendered client_management/clients/province_update.js.erb (9.1ms)
Completed 200 OK in 14ms (Views: 12.5ms | ActiveRecord: 0.3ms)
出力:
<select name="province_id" id="province_id" class="select2-offscreen" title="" tabindex="-1">$("#province").html(' \n\nProvince<\/label>
<option value="\"105\"">pr1<\/option>\n</option>
<option value="\"108\"">pr2<\/option><\/select>\n')
$("#district").html('\nDistrito<\/label> </option>
<option value="\"\"">Select<\/option><\/select>\n')</option>
</select>
私はこのコードを試してみましたが、私はまだHTMLを抱えています問題:
$("#province_bill").append('<%= j render partial: "provinces_bill_result" %>')
私はこのコードを変更する場合は、ドロップダウンが更新されません。
$("#province_id").select2();
を私は、コントローラ上でこのコードを試してみましたが、それはドロップダウンを更新していない:
def province_update
@provinces = Province.where(departament_id: params[:departament_id])
respond_to do |format|
format.json { render json: @provinces }
end
end
Ryanごめんなさい#province_id正しいコードに従って投稿を編集したが、まだHTMLエラーを表示しています。 –