【问题标题】:jquery tokeninput input parameter missingjquery tokeninput 输入参数丢失
【发布时间】:2012-10-17 12:58:49
【问题描述】:

我正在关注关于 jquery tokeninput 的 railscasts 第 258 集。

不知道为什么用户的输入没有到达用户查询的输入参数?

我的数据库是 postgres。

药房管理员

    def index
      @pharmacies = Pharmacy.order(:name)
      respond_to do |format|
        format.html
        format.json { render json: @pharmacies.tokens(params[:q]) }
      end
    end

用户模型

  def pharmacy_tokens=(tokens)
    self.pharmacy_ids = Pharmacy.ids_from_tokens(tokens)
  end

药房模式

  def self.tokens(query)
    pharmacies = where('lower(name) LIKE ? or name LIKE ?', "%#{query}%", "%#{query}%")
    if pharmacies.empty?
      [{id: "<<<#{query}>>>", name: "New: \"#{query}\""}]
    else
      pharmacies
    end
  end

用户视图

    <div class="field">
      <%= f.label :pharmacy_tokens, "Pharmacies" %><br />
      <%= f.text_field :pharmacy_tokens, data: {load: @user.pharmacies} %>
    </div>

用户的.js.coffee

    jQuery ->
    $('#user_pharmacy_tokens').tokenInput '/pharmacies.json'
    theme: 'facebook'
    prePopulate: $('#user_pharmacy_tokens').data('load')
    preventDuplicates: true
    queryParam: "q"

结果

    Processing by PharmaciesController#index as JSON
    Parameters: {"locale"=>"en"}
    (0.6ms)  SELECT COUNT(*) FROM "pharmacies" WHERE (lower(name) LIKE '%%' or name LIKE '%%')
    Pharmacy Load (0.8ms)  SELECT "pharmacies".* FROM "pharmacies" WHERE (lower(name) LIKE '%%' or name LIKE '%%') ORDER BY pharmacies.name ASC, name
    Completed 200 OK in 30ms (Views: 27.0ms | ActiveRecord: 1.4ms)

当在 text_field 中输入时,javascript 可以正常工作,只是文本不再出现在查询中……只是我空的“喜欢”百分号……“%%”。我的输入发生了什么变化?

提前谢谢你。

【问题讨论】:

    标签: jquery ruby-on-rails forms jquery-tokeninput


    【解决方案1】:

    尝试其中一种。主要是第一个。

    1. Try %#{query}% without double quotes.
    2. Try %query% without double quotes
    

    让我知道哪一个有效。

    【讨论】:

    • 两者都不起作用,当删除双引号时,where 子句正则表达式不再有效。我也尝试了单引号,虽然它是一个有效的正则表达式,但不是查询参数的字符串被传递到查询中。SELECT COUNT(*) FROM "pharmacies" WHERE (lower(name) LIKE '%#{query}%' or name LIKE '%#{query}%')
    • 是语言环境参数造成的吗? Processing by PharmaciesController#index as JSON Parameters: {"locale"=&gt;"en"} [1m[36mPharmacy Load (1.0ms)[0m [1mSELECT "pharmacies".* FROM "pharmacies" WHERE (name ILIKE '%%') ORDER BY pharmacies.name ASC, name[0m Completed 200 OK in 30ms (Views: 28.0ms | ActiveRecord: 1.0ms)
    • 你的控制器中是否有 params[:q]?
    • 还在 JS 中的 jQuery 令牌输入选项之间放置逗号。从选项中删除 queryParam,因为它默认作为 q 传递。把逗号像
    • 我添加了逗号,但值仍然没有被传入。我不确定你的第一个问题是什么意思..“你的控制器中是否有 params[:q] ? " @kashyap
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多