私は広告ベースの Web サイトに取り組んでおり、javascript によって入力される広告の種類に合わせてフォームを調整したいと考えています。
たとえば、私には多くのタイプがあります。車&携帯電話
コーヒースクリプトを使用して前の入力に基づいてフィルタリングする 3 つのドロップダウンがあります (コードは以下に含まれます)。
最後のボックスで選択した値に応じて、フォームにパーシャルをロードする必要があります。
以下の例を見てください。
最初のドロップダウンはカテゴリ、サブカテゴリ、サブサブカテゴリです。
最後のボックス「ゲーム」が選択されたときに、部分的な「_games.html.erb」をロードしたい
ドロップダウンを非表示にしてフィルタリングするための Coffee Script は次のとおりです。
jQuery ->
$('#classified_tag_list').autocomplete
source: $('#classified_tag_list').data('autocomplete-source')
$('#classified_sub_category_id').hide()
$('#classified_sub_sub_category_id').hide()
sub_category = $('#classified_sub_category_id').html()
$('#classified_category_id').change ->
category = $('#classified_category_id :selected').text()
options = $(sub_category).filter("optgroup[label='#{category}']").html()
if (options)
$('#classified_sub_category_id').html(options)
$('#classified_sub_category_id').show()
$('#classified_sub_sub_category_id').empty()
else
if(not category == 'Please select a category')
$('#classified_sub_category_id').parent().hide()
$('#classified_sub_sub_category_id').parent().hide()
$('#classified_sub_category_id').empty()
$('#classified_sub_category_id').empty()
$('#classified_sub_sub_category_id').empty()
$('#classified_sub_sub_category_id').empty()
suburbs = $('#classified_sub_sub_category_id').html()
$('#classified_sub_category_id').change ->
city = $('#classified_sub_category_id :selected').text()
options = $(suburbs).filter("optgroup[label='#{city}']").html()
if (options)
$('#classified_sub_sub_category_id').html(options)
$('#classified_sub_sub_category_id').show()
else
$('#classified_sub_sub_category_id').empty()
$('#classified_sub_sub_category_id').hide()
では、最後のドロップダウンの値に応じて、javascript を使用してパーシャルをロードするにはどうすればよいでしょうか。
[編集]
選択ボックスに基づく動的部分 - Rails 2.3.5を見ました
そしてこれが私が持っているものです
_form.html.erb
<script type="text/javascript">
$(document).ready(function() {
$('#classified_sub_sub_category_id').change(function() {
$.ajax({ url: '/classifieds/form_partial/'+ this.value });
});
});
</script>
routes.rb
resources :classifieds do
match "/form_partial/:id" => "classifieds#form_partial"
end
classifieds_controller.rb
def form_partial
@category = Category.find(params[:id])
end
form_partial.js.erb
<% if @category == 1 %>
$('#classified_sub_sub_category_id').after('<div id="product_partial"><%= escape_javascript render('/forms/cars') %></div>');
<% else %>
$('#classified_sub_sub_category_id').after('<div id="product_partial"><%= escape_javascript render('/forms/cars') %></div>');
<% end %>
しかし、それはエラーを与えます
undefined method `render' for #<#<Class:0xa0805fc>:0xb574788>
(in /home/james/hustle/app/assets/javascripts/form_partial.js.erb)