2013-04-02 95 views
2

我正在基於分類的網站上工作,並且我希望使窗體適應通過javascript輸入的分類類型。Rails渲染部分取決於集合的值選擇

例如我有很多類型,即。汽車& &手機

我有三個下拉菜單,使用咖啡腳本根據以前的輸入進行過濾(代碼將在下面包含)。

我希望表單根據最後一個框中的選定值加載一個部分。

看看下面的例子。

第一個下拉菜單爲類別,然後是子類別,然後是子子類別。

當選擇了最後一個盒子「遊戲」爲它加載的局部「_games.html.erb」

an example

的咖啡腳本我有隱藏和過濾的下拉菜單是因爲我想要的如下所示

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加載部分?

[編輯]

我看着Dynamic Partial Based on Select Box - 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) 
+0

以及最新的問題? – Lichtamberg

+1

詹姆斯,看看這可以幫助你http://stackoverflow.com/questions/14592642/dynamic-partial-based-on-select-box-rails-2-3-5 –

+0

嗨@LuísRamalho我跟着教程,但得到一些錯誤,如發佈在更新後的問題 – JamesWatling

回答

1

我傻固定路易斯·拉馬略按評論

的錯誤發生,因爲你把文件form_partial。資產>文件夾中的js.erb。嘗試轉而使用視圖文件夾。 - LuísRamalho