我正在尝试在字段上运行tokeninput插件。
首先,本教程主要是从另一个相关模型中添加id。我不想这样做,只是使用我自己的模型(表)中的一个名为tags
的字段。
目前当我输入它时会动作一个/notes/tags.json ajax调用但是没有返回任何内容,我做得对吗?
控制器:
class NotesController < ApplicationController
helper_method :sort_column, :sort_direction
respond_to :html, :json
def index
@notes = Note.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page])
@tag = Note.where('tag LIKE ?', "%#{params[:q]}%")
end
型号:
class Note < ActiveRecord::Base
attr_accessible :name, :tag
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
scoped
end
end
end
答案 0 :(得分:1)
ok:这是一个使用jquery自动完成的粗略但有效的例子
https://github.com/glennmartinez/QaBase/pull/1
步骤如下:
data-autocomplete-source
属性中声明路径或数据本身,例如:<%= f.text_area :my_token_field, 'data-autocomplete-source' => features_path
before_save
转换。使用TOKENINPUT并关注http://railscasts.com/episodes/258-token-fields并查看插件页面上的示例,它希望您的数据采用此格式
[
{"id":"856","name":"House"},
{"id":"1035","name":"Desperate Housewives"},
...
]
您可以通过引用ID中不同的内容来创建相同的哈希值,例如
Notes.all.map { |n| {:id => n.tag, :name => n.name } }.to_json
将生成如下内容:
[
{"id":"tagname","name":"House"},
{"id":"othertagname","name":"Desperate Housewives"},
...
]
然后,您可以告诉响应字段按标签名称搜索表格。
当然,您需要在这些上创建某种独特性,以便仅管理返回的1条记录。
我希望这会有所帮助。