0

タグコントローラーに次のものがあります(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
4

1 に答える 1

1

あなたはこれを行うことができます:

 @tag = Tag.find_by_name(params[:q])

また

 @tag = Tag.name_like(params[:q])   #For this you need to install gem [searchlogic][1]

 if @tag.blank?
   # Do you things
 end
于 2012-11-25T15:37:43.563 に答える