我曾多次观看过ryan rails-casts,但我在这个问题上坚持了几天。主要的问题是我不能用jquery.tokeninput或jquery设置新的标签记录。我很确定它与错误的路由设置有关......提前谢谢!无法通过jquery.tokeninput添加新标签
#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红宝石经验的用户输入文本的阵列功能,并且设置了有点不同 - 但在原生Javascript版本中,您需要在这里的job.js.coffee中使用参数'allowFreeTagging:true' - 也许试试它作为一个潜在的快速修复? – Chris
看起来好像没有为路径“/jobs/tags.json”定义的路由,在作业资源路由内添加了“get'标签”,在:: collection上。 – Dipil