这是我的类别控制器
class CategoriesController < ApplicationController
def index
@categories = Category.order(:name).where("name like ?", "%#{params[:term]}%")
render json: @categories.map(&:name)
end
end
这是我的类别模型
class Category < ActiveRecord::Base
has_many :products
end
这是我的产品型号
class Product < ActiveRecord::Base
belongs_to :category
def category_name
category.try(:name)
end
def category_name=(name)
self.category = Category.find_by_name(name) if name.present?
end
end
我的product.js.coffee
jQuery ->
$('#product_category_name').autocomplete
source: $('#product_category_name').data('autocomplete-source')
我的产品表格是
<div class="field">
<%= f.label :category_name %><br />
<%= f.text_field :category_name, data: {autocomplete_source: categories_path} %>
</div>
这里我想从搜索中选择catogory的名称时保存数据库中的类别ID。
上面的代码是Mysql的工作代码 我想为Mongodb数据库更改它。我正在使用Mongoid。 我应该改变哪个部分在Mongodb工作..
答案 0 :(得分:1)
如果使用MongoDB,您肯定需要修改查询模型的方式。这一行:
@categories = Category.order(:name).where("name like ?", "%#{params[:term]}%")
是否特定于SQL。您应该将其转换为MongoDB / Mongoid中可读的内容,如:
@categories = Category.where({:name => /#{params[:term]}/}).order_by(name: 1)
此外,您还必须将ActiveRecord替换为Mongoid。如果您使用Mongoid作为您的ODM,可以参考Mongoid's installation instruction。