【发布时间】:2014-02-05 09:11:37
【问题描述】:
我已经看过无数次 ryan rails-casts 了,但是我在这个问题上停留了几天。主要问题是我无法使用 jquery.tokeninput 或没有 jquery 设置新的标签记录。我很确定这与错误的路线设置有关...提前谢谢您!
#prepopulating 表单工作正常
_form.html.haml
= f.text_field :tag_list, data: {load: @job.tags.map(&:attributes).to_json }
job.js.coffee
jQuery ->
$('#job_tag_list').tokenInput '/jobs/tags.json',
theme: 'facebook'
prePopulate: $('#job_tag_list').data('load')
job.rb
attr_accessible :tag_list
def self.tokens(query)
tags = ActsAsTaggableOn::Tag.all.where("name LIKE ?", "%#{query}%")
if tags.empty?
[{id: "<<<#{query}>>>", name: "Add new skill: \"#{query}\""}]
else
tags
end
end
def self.tag_list=(arguments)
return if !arguments.is_a?(Hash)
list = arguments[:tag_list]
list.gsub!(/<<<(.+?)>>>/) { ActsAsTaggableOn::Tag.find_or_create_by_name(name: $1).name }
end
jobs_controller.rb
def tags
@tags = ActsAsTaggableOn::Tag.where("tags.name LIKE ?", "%#{params[:q]}%")
respond_to do |format|
format.json {render :json => @tags.tokens(params[:q])}
end
end
routes.rb
resources :jobs do
member do
post 'reply'
end
end
【问题讨论】:
-
我没有将 jquery-tokeninput 与 ruby 一起使用的经验,并且设置有些不同 - 但在本机 Javascript 版本中,您需要在此处使用参数
allowFreeTagging:true@ 987654327@ - 也许尝试一下作为潜在的快速修复? -
看起来您没有为路径“/jobs/tags.json”定义路由,请在作业资源路由中添加“get 'tags', on: :collection”。跨度>
标签: ruby-on-rails acts-as-taggable-on jquery-tokeninput