我在这里以下教程https://github.com/crowdint/rails3-jquery-autocomplete-app约Rails3中jquery的自动完成功能。 一切完美,除了自动完成!
下面是我所使用的方法。
- 在Gemfile中,我加了“宝石‘Rails3中,jQuery的自动完成’”
- 我用“:安装导轨摹自动完成”生成自动完成文件
- 我下载的Javascript文件
- 我包括在由<%= javascript_include_tag '的jquery-1.4.2.min.js', '的jquery-UI-1.8.4.custom.min.js', '自动完成-rails.js' 在布局中的Javascript文件,' rails.js'%> <%= stylesheet_link_tag '的jquery-UI-1.8.4.custom.css' %>
- 创建与名称作为由串的品牌模型“导轨克模型品牌名称:字符串”,并通过加入Brand.create几个项目到品牌(:名称=>“阿尔法”)。
- 创建了一个控制器通过得到“欢迎/显示”根“导轨克控制器欢迎节目”,和编辑的routes.rb:到=>“欢迎#秀”
- 新增“自动完成:品牌:名”在app /控制器/ welcome_controller.rb
- 在配置/ routes.rb中添加“得到‘欢迎/ autocomplete_brand_name’”
- 在应用程序/视图/欢迎/ show.html.erb:<%=的form_tag DO%> <(%)= autocomplete_field_tag '姓名', '',welcome_autocomplete_brand_name_path%> <%端%>
基本上,我跟着除了最后一个教程的每一步(我觉得应该autocomplete_field_tag而不是text_field_tag的名字)。 然而,自动完成不起作用。 我是新来的Rails和挣扎在这几天。 任何人都可以扔在这个问题上有些轻?
谢谢!
我一直在痛苦完全相同的问题(Rails的3.2.1和使用演示应用教程)。 我也有关于这是怎么回事,这使我的解决方案的更多信息。 希望这对你有用!
我的控制台日志中显示以下错误:
Started GET "/%7B:autocomplete=%3E%22/welcome/autocomplete_brand_name%22%7D?term=Al" for 127.0.0.1 at 2012-09-04 21:38:14 +1000
ActionController::RoutingError (No route matches [GET] "/%7B:autocomplete=%3E%22/welcome/autocomplete_brand_name%22%7D"):
对于ASCII-挑战(即我)的代码
%7B {
%3E >
%22 "
%7D }
所以URI它试图得到的是
/{:autocomplete=>"/welcome/autocomplete_brand_name"}?term=Al
该路由器是不快乐的。
当你在为渲染网页的HTML源代码,它看起来像:
<input data-autocomplete="{:autocomplete=>"/welcome/autocomplete_brand_name"}" id="name" name="name" type="text" value="" />
这表明从.erb文件中的参数被泄露过。 我修改表单的内容有:
<%= form_tag do %>
<%= autocomplete_field_tag 'name', '', welcome_autocomplete_brand_name_path %>
<% end %>
即没有:自动完成=>的建议在本教程中,现在它为我工作。 你的示例代码显示你已经有这个,所以你可以说我也改变了以下问题是痛苦:
之前,我设法集中在前面的点,我的控制台日志是发出种种的抱怨没有找到.css和.js文件。 我已经结束了从公共/ JavaScript和公共/样式表的所有文件转移到新的应用程序/资产/ JavaScript和应用程序/资产/样式表 ,然后修改主的application.js和application.css文件的内容,并也主要布局:
应用程序/资产/样式表/ application.css:
*= require_self
*= require jquery-ui-1.8.23.custom
*= require_tree .
应用程序/资产/ Java脚本/ application.js中:
//= require jquery-1.8.0.min
//= require jquery-ui-1.8.23.custom.min
//= require autocomplete-rails
//= require rails
//= require_tree .
如果您的.js和.css的确切版本号不同,不要忘了在我的例子来更改数字。
最后一个变化是删除建议增加的application.html.erb并依靠资产管道(即所有上述要求)。 唯一的项目我有.css和.js文件的主要布局文件
应用程序/视图/布局/ application.html.erb:
<%= stylesheet_link_tag 'application' %>
<%= javascript_include_tag 'application' %>
现在,我已经得到了基本的工作,我可以回去尝试与HAML,Formtastic和nested_forms宝石使用它! 希望不采取新的一天了我的生活。
干杯
PS - 教程还表示,把
gem 'rails', '3.0.0'
但因为你是使用Rails 3.2.1,把它作为原文:
gem 'rails', '3.2.1'
最后,漂亮的脚手架发电机倒不把事情的3.2.1标准的正确位置; 转变是从公共/ JavaScript和公共/样式表文件到应用程序/资产的子目录。 你必须编辑和合并漂亮的.css到默认的一个,你会在app /资产/样式找到。
我有类似的经历,使用Rails 3.2.8在OSX和3.2.9的Windows,并按照这里的自动完成应用教程:
https://github.com/crowdint/rails3-jquery-autocomplete-app
如果我下载从GitHub示例应用程序,它编译和运行良好。 如果我遵循的步骤我无法得到的东西的工作。 示例应用程序有一堆在它othere的东西,所以我想这个互动最瘦的方式。 挖后,我发现下面的变化除了下面的步骤把事情的工作是必要的。
<%= javascript_include_tag :defaults %>
从application.html.erb文件行。 这是不是有和负载时会导致错误。
- 轨道版本是3.2.9或3.2.8,请确保您显式调用它。
gem 'rails', '3.2.9'
- 请确保您明确版本的Rails3中,jQuery的自动完成功能,如下0.6.0版本。
source 'https://rubygems.org' gem 'rails', '3.2.9' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' gem 'rails3-jquery-autocomplete', '0.6.0' gem 'nifty-generators' # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', :platforms => :ruby gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails'
我没有要改变的application.js文件在所有。
// //= require jquery //= require jquery-ui //= require jquery_ujs //= require_tree . //
application.html.erb文件头部分看起来是这个最新的jQuery的文件,我从jqueryui.com下载
<head> <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title> <%= stylesheet_link_tag "application" %> <%= javascript_include_tag 'jquery-1.8.2.js', 'jquery-ui-1.9.1.custom.min.js', 'autocomplete-rails.js', 'rails.js' %> <%= stylesheet_link_tag 'jquery-ui-1.9.1.custom.css' %> <%= csrf_meta_tag %> <%= yield(:head) %> </head>
我跑进也小事情是不加载在64位Windows的sqlite3的。 造成这种情况的解决方案是将sqlite3.dll复制到Windows / system目录。 不是Windows或Windows / system32下,或路径,而不是红宝石/ bin在没有在任何地方。
最后,在Rails3中,jQuery的自动完成的早期版本,text_field_tag支持。 在GitHub上的示例使用0.6.0,因为这宝石的版本,并使用text_field_tag。 对于最近的滴状1.0.10,autocomplete_field_tag支持。 他们是不一样的,虽然输入字段呈现同样的方式,使用了错误的标签时,自动完成不工作。