我的标签控制器中有以下内容(params[:q]
来自此插件: http: //loopj.com/jquery-tokeninput/)。这基本上是此截屏视频的略微修改产品:http ://railscasts.com/episodes/258-token-fields 。
tags_controller.rb:
class TagsController < ApplicationController
def index
@tags = Tag.where("name like ?", "%#{params[:q]}%")
results = @tags.map(&:attributes)
results << {:name => "Add: #{params[:q]}", :id => "CREATE_#{params[:q]}_END"}
respond_to do |format|
format.html
format.json { render :json => results }
end
end
我只想results << {:name => "Add: #{params[:q]}", :id => "CREATE_#{params[:q]}_END"}
在名称中不存在的情况下才这样做@tags
。因为现在,它看起来像这样:
编程#输入字段
编程#下拉菜单
添加:编程#下拉菜单
我希望它像这样显示
编程#输入字段
添加:编程#下拉菜单
如何做到这一点?
编辑:
这是模型和 JavaScript 以防万一:
应用程序.js
$(function() {
$("#post_tag_tokens").tokenInput("/tags.json", {
crossDomain: false,
prePopulate: $("#post_tag_tokens").data("pre"),
preventDuplicates: true,
theme: "facebook"
});
});
post.rb:
def tag_tokens=(ids)
ids.gsub!(/CREATE_(.+?)_END/) do
Tag.find_or_create_by_name(:name => $1).id
end
self.tag_ids = ids.split(",")
end