タグコントローラーに次のものがあります(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
。今のところ、次のようになっているためです。
プログラミング#inputフィールド
プログラミング#ドロップダウンメニュー
追加:プログラミング#ドロップダウンメニュー
次のように表示したい
プログラミング#inputフィールド
追加:プログラミング#ドロップダウンメニュー
それを達成する方法は?
編集:
念のため、モデルとJavaScriptを次に示します。
application.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