Ruby on Rails - 简单表单自动完成关联搜索

2024-03-19

我在基本任务管理应用程序中有一个表单,允许将任务分配给用户(任务属于用户)。我为此使用简单表格。

目前,该关联以典型方式填充,带有用户下拉列表,如下所示:<%= f.association :user, label_method: :name, value_method: :id, include_blank: false %>.

但是,随着用户数量的增长,我希望将其更改为自动完成表单字段以查找用户。我尝试过遵循Railscast 的主题 http://railscasts.com/episodes/102-auto-complete-association-revised,尽管它不使用简单表单并且不适用于我的实现。

这是我的表格、模型和 .coffee 代码:

Form

<%= simple_form_for @task do |f| %>
  ...
  <%= f.input :user_name, as: :search, data: 
      {autocomplete_source: User.pluck(:name)} %>
  ...
  <%= f.button :submit %>
<% end %>

Model

# Virtual attribute for autocomplete form field
  def user_name
    user.try(:name)
  end

  def user_name=(name)
    self.user = User.find_by_name(name) if name.present?
  end

任务.咖啡

jQuery ->
  $('#task_user_name').autocomplete
    source: $('#task_user_name').data('autocomplete-source')

这会生成以下 HTML:

<input class="string search optional form-control 
ui-autocomplete-input ui-autocomplete-loading" type="search" 
value="Robert Strong" name="task[user_name]" id="task_user_name" 
autocomplete="off">

虽然开发工具控制台中出现以下错误:

Uncaught TypeError: this.source is not a function

关注autocomplete="off"在 HTML 中,无法想象 TypeError 有多大帮助!

我很困惑,因此非常感谢任何有关使其正常工作的建议!预先感谢,让我知道你的想法,史蒂夫。


autocomplete_source 需要一个数组或 URL,调用该数组或 URL 时会返回 JSON 以及与查询匹配的结果。http://api.jqueryui.com/autocomplete/#option-source http://api.jqueryui.com/autocomplete/#option-source

现在你有

  <%= f.input :user_name, as: :search, data: 
  {autocomplete_source: User.pluck(:name)} %>

那可能会返回一个 JavaScript 字符串。所以你可以把它改成这样:

  <%= f.input :user_name, as: :search, data: 
  {autocomplete_source: User.pluck(:name).to_json} %>

然后在设置自动完成时解析该 JSON:

jQuery ->
  $('#task_user_name').autocomplete
    source: JSON.parse($('#task_user_name').data('autocomplete-source'))

但从长远来看(当您有很多用户时),这将显着影响页面的加载时间。您实际上应该遵循该railscast 并将URL 作为自动完成源:

  <%= f.input :user_name, as: :search, data: 
  {autocomplete_source: users_path} %>

确保将 json 渲染路径添加到用户控制器上的索引操作中。

如果您的索引操作也用于其他用途,您可以使用respond_to:

# users_controller
def index
  @users = User.order(:name)
  @users = @users.where("name like ?", "%#{params[:term]}%") if params[:term]

  respond_to do |format|
    format.html  # index.html.erb
    format.json  { render :json => @users.map(&:name) }
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails - 简单表单自动完成关联搜索 的相关文章

  • Skrollr 添加空白

    我已经尝试了一切 我在谷歌上阅读了 4 5 页试图找到适合我的修复程序 已经筋疲力尽了 即使我使用 skrollr 示例 我的问题仍然存在 不是说他们做错了什么 我知道我只是没有正确理解它 因此 我上传了一个演示 仅在移动设备上展示这个尴尬
  • 右列固定的 Div 表

    我最近接手了一个非营利网站作为一个项目 我正在使用一个现有的网站 所以我必须使用很多已经编程的东西 所以我所要做的就是创建设计 I made a diagram of basically what I can t figure out ho
  • 如何禁用 TinyMCE 文本区域

    我已经尝试了以下所有方法 tbxNote attr disabled disabled doesn t work tbxNote attr disabled true doesn t work either tinyMCE init mod
  • 使垂直网格线出现在跨区表格单元格的顶部

    我正在开发一个 ASP Net 项目 我有一个
  • 定义 jQuery“eq”

    我很难理解jQuery EQ http docs jquery com Core eq 有人可以向我解释它的用途吗 它索引什么以及如何索引 thanks 使用这个 HTML ul li Mario li li Luigi li li Pri
  • jQuery 验证:更改默认错误消息

    有没有一种简单的方法来更改默认错误值jQuery 验证插件 http jqueryvalidation org 我只是想重写错误消息 使其对我的应用程序更加个性化 我有很多字段 所以我不想为字段 x 单独设置消息 我知道我可以做到这一点 将
  • 适用于移动应用程序的 Rails REST API。会议

    我正在创建一个移动应用程序 该应用程序拥有用户并与后端的自定义 Rails REST API 进行通信 我应该在登录时创建会话吗 或者我应该在每个请求中发送用户名和密码 如果会议是可行的方法 那么通常是如何实施的 只需生成令牌 并使用它们来
  • 使用 jQuery 创建新元素的正确或更好的方法是什么?

    与答案相关https stackoverflow com a 10619477 1076753 https stackoverflow com a 10619477 1076753创建一个元素更好用 div id foo class a o
  • 循环遍历 JSON 数组

    我最近发布了另一个问题 用户立即为我指明了正确的方向 ajax type POST url data token token re 8 cache false timeout 5000 success function html auth
  • 使用 bootstrap 将并排的网格位置交换到顶部和底部

    我有两个 div 内容和图像 它们在中等屏幕中并排放置 col md 6 内容 col md 4 图片 因此 当屏幕尺寸更改为小屏幕和 xs 屏幕时 这些 div 不应该并排放置 它们应该像这样顶部和底部对齐 image content 这
  • 我可以使用 jQuery 执行 $_GET 方法/查看文件的 url [重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中获取查询字符串值 https stackoverflow com questions 901115 get query string values in javascrip
  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • jQuery 模板:使用 AND 运算符创建条件语句

    这有效
  • 无法从 JQuery ajax 调用接收 JSON

    我已经确定来自服务器的 JSON 是有效的 手动进行 ajax 调用 但我真的很想使用 JQuery 我还使用 firebug 确定发送到服务器的 post URL 是正确的 但是 错误回调仍然被触发 解析错误 我还尝试了数据类型 文本 我
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • “$(document).ready”函数的替代方案

    我在 aspx 页面中使用 fancybox 对于灯箱 文档就绪功能在此页面中不起作用 有人告诉我编写一个新的 JavaScript 代码来加载该页面中的灯箱 包括 jQuery 检查网络选项卡 确保您没有收到 404 检查控制台是否没有收
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • Radiobutton-带有纯 html/css 的按钮

    是否可以创建像这样的单选按钮JQuery http jqueryui com demos button radio那些 用纯html css thanks 试试这个小提琴 http jsfiddle net mcXm7 1 http jsf
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 通过 SMTP 发送电子邮件时出错

    我正在尝试使用 gmail 作为 SMTP 通过 Java 代码发送电子邮件 但出现如下异常 请告诉我为什么找不到 gmail 主机 我在办公室网络中工作 不确定是否某些防火墙阻止其发送 如果是的话 出路是什么 Exception in t
  • Msvcr71.dll Msvcp71.dll 丢失

    我写了一些应用程序 但是当我在多个操作系统上运行它时 我们发现这两个文件丢失了 当我将它们添加到 windows system32 文件夹时 应用程序工作正常 我看到了这个解决方案如何正确安装 msvcr71 dll https stack
  • 通过 ng-init 将变量注入到控制器

    我想将具有不同值的相同变量多次注入到同一个控制器中 这就是我尝试过的 在每次调用中获取不同值的方法是什么 HTML div div div div div div
  • 如何将图像(.png)转换为base64字符串,反之亦然并将其存储到指定位置

    我正在尝试将图像 png 存储到Windows 8应用程序中的sqlite数据库中 我发现可以通过将其转换为base64字符串并将该字符串存储到数据库来完成 稍后在应用程序中 我想将该 base64 字符串转换为 png 图像并将其存储到指
  • 如何确定两个相似的乐队名称是否代表同一乐队?

    我目前正在开展一个项目 该项目要求我将我们的乐队和场地数据库与许多外部服务相匹配 基本上我正在寻找一些关于确定两个名字是否相同的最佳方法的方向 例如 我们的数据库场地名称 The Pig and Whistle 服务1 猪和口哨 服务2 猪
  • 线性过滤能否用于 MSAA 纹理到非 MSAA 纹理的 FBO blit?

    我有两个 2D 纹理 第一个是 MSAA 纹理 使用的目标为GL TEXTURE 2D MULTISAMPLE 第二个非 MSAA 纹理使用的目标为GL TEXTURE 2D 根据 OpenGL 的ARB texture multisamp
  • 如何跟踪 iOS 设备上 3G/wifi 的网络流量? [复制]

    这个问题在这里已经有答案了 我想了解一个应用程序如何DataMan http itunes apple com us app dataman real time data usage id393282873 mt 8工作 即使它在后台运行
  • 在 MSBuild 中,我可以在元数据项上使用 String.Replace 函数吗?

    在 MSBuild v4 中 可以使用函数 例如string replace on 特性 但是我怎样才能使用函数Metadata 我想使用string replace功能如下
  • 如何从 rake 文件运行 ruby​​ 类?

    我想运行一个 ruby 类样本 rake file 考虑myruby rb是一个红宝石文件 我想从以下位置运行这个样本 rake like ruby myruby rb 添加一个示例脚本来添加 tobias 在这里所说的内容 样本内容myr
  • 数组的渲染 json 问题

    我有来自我的服务器的这个数组 当我使用 put 时返回如下 formatted total price Acirc pound 66 00 formatted total price Acirc pound 128 00 formatted
  • 按钮点击声音

    这就是我想做的 我有大约 30 个按钮 我希望当点击每个按钮时 它会播放不同的mp3文件 像这样http www soundjig com pages soundfx beeps html http www soundjig com pag
  • 如何从 TypeScript 中的通用部分构建目标对象?

    我在用 电子邮件受保护 cdn cgi l email protection 我有一个目标对象 interface MyTarget a string b string c string d string 我想使用泛型创建部分对象的多个转换
  • jquery-confirm 对话框中的 jQuery UI 日期选择器

    我正在使用下面链接中的 jquery confirm 脚本 它能够在对话框中包含表单字段 您可以通过单击下面链接中的 按提示操作 蓝色按钮来查看此内容 我已经设置了表单 单个字段 但我希望这个输入是一个日期选择器 并且我不知道应该在哪里放置
  • Django Q 查询 & 在同一字段上?

    这是我的模型 class Event models Model user models ForeignKey User blank True null True db index True name models CharField max
  • 下拉菜单中的 jvectormaps,NS_ERROR_FAILURE:

    我的 jvector 地图位于下拉菜单中 它在 safari opera 和 chrome 中运行良好 但会损坏 没有地图 和错误消息 NS ERROR FAILURE 2 0 2 min js 第 700 行 return this no
  • LinkedList不能序列化?

    这是我的课程 http pastebin com 3dc5Vb1t http pastebin com 3dc5Vb1t 当我尝试跑步时 BookStore b new BookStore b LoadFromXML Server MapP
  • 如何替换 Tkinter 应用程序中的图标?

    我在 Windows 10 上使用 Python 3 5 0 并且想要替换它 要更改图标 您应该使用iconbitmap or wm iconbitmap我的印象是您想要将其更改为的文件必须是 ico 文件 import tkinter a
  • C#:GPS跟踪系统[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 C net 中构建带有移动设备 带 GPS 的 GPS 跟踪系统 场景是 通过支持 GPS 的手机跟踪用户 服务工程师 这里没
  • 保持鼠兔 BlockingConnection 存活而不禁用心跳

    我正在使用 pika 0 10 0 和 python 2 7 版本开发 RabbitMQ 消费者 在我的消费者客户端中 我有一个根据输入消息运行一段时间的进程 时间可能从 3 到 40 分钟不等 我不想禁用心跳 相反 我正在寻找一些回滚机制
  • Ruby on Rails - 简单表单自动完成关联搜索

    我在基本任务管理应用程序中有一个表单 允许将任务分配给用户 任务属于用户 我为此使用简单表格 目前 该关联以典型方式填充 带有用户下拉列表 如下所示 但是 随着用户数量的增长 我希望将其更改为自动完成表单字段以查找用户 我尝试过遵循Rail