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。因为现在,它看起来像这样:

编程#输入字段

编程#下拉菜单

添加:编程#下拉菜单

我希望它像这样显示

编程#输入字段

添加:编程#下拉菜单

如何做到这一点?

编辑:

这是模型和 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
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 回答