我的应用程序使用祖先宝石。
class Location < ActiveRecord::Base
has_ancestry :cache_depth => true
has_many :posts
end
class User < ActiveRecord::Base
belongs_to :location
end我创造了一些随机地点,
我的问题如果用户注册表单如果用户选择加利福尼亚,显示儿童洛杉矶和弗雷斯诺,然后选择弗雷斯诺然后显示它的孩子。
我得到了下拉列表教程/下拉列表-demo.php的javascript教程
如何使用祖先宝石进行工作
发布于 2014-07-21 08:40:02
嵌套
首先,如果您希望将它们都保存在一个dropdown中,那么我们创建了以下帮助程序来实现它:

#app/helpers/application_helper.rb
def nested_dropdown(items)
result = []
items.map do |item, sub_items|
result << [('- ' * item.depth) + item.name, item.id]
result += nested_dropdown(sub_items) unless sub_items.blank?
end
result
end这样你就可以打电话:
<%= f.select(:category_ids, nested_dropdown(Category.all.arrange), prompt: "Category", selected: @category ) %>这将使您能够调用单个下拉列表,这是根据您的祖先关联嵌套的。
--
Ajax
如果您想要有双下拉框,您可能需要实现一个ajax函数来在每次初始下拉列表更改时提取所需的数据:
#config/routes.rb
resources :categories do
get :select_item
end
#app/assets/javascripts/application.js
$("#first_dropdown").on("change", function(){
$.ajax({
url: "categories/"+ $(this).val() + "/select_item",
dataType: "json",
success: function(data) {
//populate second dropdown
}
})
});
#app/controllers/categories_controller.rb
Class CategoriesController < ApplicationController
respond_to :json, only: :select_item
def select_item
category = @category.find params[:category_id]
respond_with category.children
end
end发布于 2014-07-20 23:58:45
我无法理解你的问题,但试着遵循本教程:
http://railscasts.com/episodes/262-trees-with-ancestry
我看了一次,当需要与祖先宝石工作时。
希望它能帮到你。
https://stackoverflow.com/questions/24855785
复制相似问题