jquery - 事件管理 - 根据第一个下拉菜单的选择刷新第二个下拉菜单 (Rails 3.2)

标签 jquery ruby-on-rails ruby-on-rails-3 drop-down-menu activeadmin

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

基本上,我想首先为公司设置一个行业,然后在子行业下拉列表中进行选择。我创建了 2 个模型:

  • 公司部门
  • 公司子部门

出于实际原因,我在代码中使用了“扇区”和“子扇区”这两个词。

我正在尝试在Active Admin - refresh second drop down based on first drop down, Ruby on Rails上使用@okliv建议但没有成功。

1-我创建了一条路线

在#routes.rb中

resources :companies

  post '/change_company_subsectors' =>'company_sectors#change_company_subsectors'

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

    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 操作

    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

但结果非常糟糕:我什至没有看到包含“扇区”和“子扇区”可能性的下拉菜单。

我应该看到行业:休闲/旅行/时尚...但我什么也没看到。 我也没有看到子部门的任何内容。

我不应该使用格式集合,例如::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)-> """<option value="#{u.id}">#{u.name}</option>"""
).change()

关于jquery - 事件管理 - 根据第一个下拉菜单的选择刷新第二个下拉菜单 (Rails 3.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034892/

相关文章:

ruby-on-rails - Rails 操作前检查是否为管理员

jquery - Rails 3 jQuery 识别 "this"对象

ruby-on-rails - 无法加载此类文件 - Nokogiri rails

javascript - 通过ajaxForm插件取消正在进行的文件上传

ruby-on-rails - 多列索引与单独索引与部分索引

javascript - jquery 无法获取字符串数组

html - 仅显示特定形式的数据库

ruby-on-rails - 为 i18n 设计属性?

jquery - 使用 jQuery 或 CSS 在悬停列表中的 anchor 标记的第一个字母下划线

jquery - 带有 HTML5 视频的 Firefox/Gecko 全屏 API (javascript/jQuery)