Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery rails4自动完成不工作_Jquery_Ruby On Rails 4_Autocomplete_Gem - Fatal编程技术网

Jquery rails4自动完成不工作

Jquery rails4自动完成不工作,jquery,ruby-on-rails-4,autocomplete,gem,Jquery,Ruby On Rails 4,Autocomplete,Gem,正在尝试在我的rails 4应用程序中使用自动完成。我试图让我的评论表单在用户输入艺术家名称时自动完成它(如果它已经存在于数据库中) 下面的例子,在我的评论中,我把 class ReviewsController < ApplicationController autocomplete :review, :artist 路线: resources :reviews do get :autocomplete_review_artist, :on => :collectio

正在尝试在我的rails 4应用程序中使用自动完成。我试图让我的评论表单在用户输入艺术家名称时自动完成它(如果它已经存在于数据库中)

下面的例子,在我的评论中,我把

class ReviewsController < ApplicationController
  autocomplete :review, :artist
路线:

resources :reviews do
    get :autocomplete_review_artist, :on => :collection
end
在我的审查表顶部:

<%= form_for(@review) do |f| %>
<% f.autocomplete_field :artist, autocomplete_review_artist_reviews_path %>
及覆核表格

<%= form_for(@review) do |f| %>
  <% f.autocomplete_field :artist, autocomplete_artist_name_reviews_path %>

资产/javascripts
中创建了一个
artist.js.erb
,内容是:
$(函数(){
变量=
$(“#艺术街景”)。自动完成({
资料来源:艺术家
});
});

包括在视图中。使用include\u javascript\u标记
提供了需要自动完成的字段
id:“artistReview”


application.js中分别需要
jquery ui
//code.jquery.com/jquery-1.10.2.js
//code.jquery.com/ui/1.10.4/jquery ui.js
。这就解决了这个问题,需要进行大量的样式设计,不过我认为在JS阵列中进行样式设计可以获得更好的效果,从而提高响应速度。 为此,需要使用.as_json方法在控制器上呈现一个变量

因此,在控制器中(参数是说明性的):

鉴于:

<%= f.text_field :somefield %>

在JS中(您不能将其放在应用程序文件中,甚至不能放在html中):

$('#somefield')。自动完成({source:'});
您可以看到,在这种情况下,ajax加载时间可能会使您的使用体验变得更糟,这一点甚至更容易,但也会阻止ajax加载时间


希望能有所帮助。

其他行已经在那里了,很抱歉不清楚,还有其他建议吗?文档似乎非常少,所以我很难找到我的问题。我在上面添加了它,非常标准。这里和他们的文档的唯一区别是,他们将艺术家放在一个单独的模型中,正如你的评论中的艺术家一样。试试看。事实上,这是更好的做法,创造了一个有很多关系,艺术家有很多评论。试过了,还是没用,更新了原始帖子
class ArtistsController < ApplicationController
  before_action :set_artist, only: [:show, :edit, :update, :destroy]

  autocomplete :artist, :name
resources :reviews do
    get :autocomplete_artist_name, :on => :collection
  end
<%= form_for(@review) do |f| %>
  <% f.autocomplete_field :artist, autocomplete_artist_name_reviews_path %>
@autocompleteArr = Object.pluck(:property).as_json
<%= f.text_field :somefield %>
$('#somefield').autocomplete({source: '<%=raw  @autocompleteArr %>'});