gpt4 book ai didi

jquery - 如何向 Rails 中的现有模型添加自动完成标记?

转载 作者:行者123 更新时间:2023-12-03 21:32:22 25 4
gpt4 key购买 nike

我正在尝试将“标签”添加到 Rails 3 应用程序中的 Article 模型。

我想知道是否有一个 gem 或插件在模型中添加了“标记”功能以及 View 的自动完成帮助程序。

我找到了 acts_as_taggable 但我不确定这是否是我应该使用的。有更新的东西吗?当我在 google 上搜索 acts_as_taggable 时,我得到了 2007 年的结果

最佳答案

acts_as_taggable_onrails3-jquery-autocomplete很好地协同工作以制作类似标记系统的 SO,请参见下面的示例。我认为 Rails 尚不存在合适的多合一选项。

按照以下步骤完成全部安装:

1.备份您的 Rails 应用程序!

2.安装jquery-rails

注意:您可以使用 jquery-rails 安装 jQuery UI,但我选择不这样做。

3.下载并安装jQuery UI

选择一个与您的网页设计相得益彰的主题(请务必使用您选择的主题测试自动完成演示,默认主题不适合我)。下载自定义 zip 并将 [zipfile]/js/jquery-ui-#.#.#.custom.min.js 文件放入应用的 /public/javascripts/ 文件夹。将 [zipfile]/css/custom-theme/ 文件夹和所有文件放入应用的 public/stylesheets/custom-theme/ 文件夹中。

4.将以下内容添加到您的 Gemfile 中,然后运行“bundle install”

gem 'acts-as-taggable-on'
gem 'rails3-jquery-autocomplete'

5.从控制台运行以下命令:

rails generate acts_as_taggable_on:migration
rake db:migrate
rails generate autocomplete:install

在您的应用中进行这些更改

在应用程序布局中包含必要的 javascript 和 css 文件:

<%= stylesheet_link_tag "application", "custom-theme/jquery-ui-1.8.9.custom" %>  
<%= javascript_include_tag :defaults, "jquery-ui-#.#.#.custom.min", "autocomplete-rails" %>

Controller 示例

编辑:根据 Seth Pellegrino 的评论进行了更改。

class ArticlesController < Admin::BaseController  
#autocomplete :tag, :name <- Old
autocomplete :tag, :name, :class_name => 'ActsAsTaggableOn::Tag' # <- New
end

模型示例

class Article < ActiveRecord::Base
acts_as_taggable_on :tags
end

路线.rb

resources :articles do
get :autocomplete_tag_name, :on => :collection
end

查看示例

<%= form_for(@article) do |f| %>
<%= f.autocomplete_field :tag_list, autocomplete_tag_name_articles_path, :"data-delimiter" => ', ' %>
# note tag_list above is a virtual column created by acts_as_taggable_on
<% end %>

注意:此示例假设您仅在整个应用程序中标记一个模型,并且仅使用默认标记类型 :tags。基本上,上面的代码将搜索所有标签,而不是将它们限制为“文章”标签。

关于jquery - 如何向 Rails 中的现有模型添加自动完成标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com