Active Admin -refresh第二次下拉基于第一次下拉选择(Rails 3.2)

我在主动管理员上实施表单时遇到问题,其中第二个下拉列表(子类别)必须调整到其前面的下拉列表中的类别选项。

基本上我想首先为一家公司设立一个行业然后选择子行业下降。 我创建了2个模型:

  • CompanySector
  • CompanySubsector

出于实际原因,我在代码中使用了“sector”和“subsectors”。

我试图在Active Admin上使用@okliv建议- 刷新第二次下拉基于第一次下拉,Ruby on Rails但没有成功。

1-我创建了一条路线

在#routes.rb中

resources :companies post '/change_company_subsectors' =>'company_sectors#change_company_subsectors' 

2-我在Helpers / ApplicationHelper.rb中定义了一个包含ajax请求的define helper

  def remote_request(type, path, params={}, target_tag_id) "$.#{type}('#{path}', {#{params.collect { |p| "#{p[0]}: #{p[1]}" }.join(", ")}}, function(data) {$('##{target_tag_id}').html(data);} );" end 

3-我把这个方法放在admin / company.rb中:onchange action

  controller do def change_company_subsectors @company_subsectors = CompanySector.find_by_id(params[:company_sector_id]).try(:company_subsectors) render :text=>view_context.options_from_collection_for_select(@company_subsectors, :id) end end 

4-在我的活动amdin表单admin / company.rb中,我在编辑表单中添加了这个:

 form do |f| f.inputs "company" do f.input :company_sector_id, :input_html => { :onchange => remote_request(:post, :change_company_subsectors, {:company_sector_id => "$('#company_sector_id').val()"}, :company_subsector_id) } f.input :company_subsector_id end 

但结果非常糟糕:我甚至没有看到有部门和子部门可能性的下拉列表。

我应该看看部门:休闲/旅游/时尚……但我什么也看不见。 我也没有看到SubSectors。

我不应该使用formtastic Collections,例如:: :as => :select, :collection => CompanySubsector.all

有谁知道我犯了哪些错误?

首先,我建议不要将JS直接放在HTML元素上; 它使以后的调试变得更加困难。

这是我经常做的事情:

 select1 = fieldset.find 'select:first' # Companies select2 = fieldset.find 'select:last' # Users select1.change(-> $.get '/admin/users.json', q: {company_id_eq: $(@).val()}, (data)-> select2.html data.map (u)-> """""" ).change()