在我为项目添加更多关系后,我收到此跟随错误.在localhost上,页面显示完全正常.但是,在尝试在heroku上查看时出现错误.
ActiveRecord::StatementInvalid (PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
Run Code Online (Sandbox Code Playgroud)
这是我的traveldeal控制器:
def show
@traveldeal = @commentable = Traveldeal.find(params[:id])
@comments = Comment.all
@title = @traveldeal.title
@eventdeals = Eventdeal.tagged_with(@traveldeal.location_tag_list, :any => true, :order => 'RANDOM()', :limit => 3)
end
Run Code Online (Sandbox Code Playgroud)
traveldeal/show.html
<% unless @eventdeals.blank? %>
<h1>Events in the area:</h1>
<% @eventdeals.each do |eventdeal| %>
<%= link_to eventdeal do %>
<!-- content -->
<% end %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Heroku日志
SELECT DISTINCT eventdeals.* FROM "eventdeals" JOIN …
postgresql ruby-on-rails heroku acts-as-taggable-on ruby-on-rails-3
我acts-as-taggable-on在我的模型中设置了这样的gem:
acts_as_taggable_on :deshanatags
Run Code Online (Sandbox Code Playgroud)
它使用上下文deshanatags.现在我需要在此上下文中以下列格式获取所有标记的列表(不仅是为一个项目分配的标记.我需要一切):
[
{"id":"856","name":"House"},
{"id":"1035","name":"Desperate Housewives"}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我试图按照很多教程,但命中死角,因为他们大多是为Rails编写3. Rails使用有一定的变化像去除attr_accessor这使我很难理解这些教程模式.所以请帮忙.
只是我试图添加Jquery令牌输入(http://loopj.com/jquery-tokeninput/)到我的应用程序
PS:通过标记表,有没有办法通过过滤上下文来获取像Tag.all输出的标签列表?
因此,在为我的rails应用程序搜索标记宝石后,我发现了令人惊叹的行为 - 可标记的宝石.安装它并玩游戏我发现它将所有标签保存在标签db中,它只保存没有上下文的Tag.name,而是保存在:through relationship db(taggings)中.在大多数情况下,我可以看到这是完美的.除了我的应用程序,我希望能够为用户提供基于预先存在的标签进行标记的能力(例如,不允许他们创建自己的标签),并且作为标签的行为无法搜索所有标签在内置的一个上下文中(例如,如果我要呈现标记db的自动完成,我将包含我的应用程序中的所有标记,这不是我想要的)
下面的方法是我刚刚充实,以确定它是否会起作用(它确实如此),但我想知道我是否遗漏了一些带有act-as-taggable的东西.我的意思是我看不到提供这种方法的任何地方?
<% ActsAsTaggableOn::Tagging.find_all_by_context("tags").each do |tagging| %>
<%= tagging.tag %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
例如,如果act-as-taggable不这样做,这是最好的方法吗?感觉有点不高效,我是否会更好地进行自定义SQL查询而不是通过act-as-taggable进行路由?
如果它对我的日志的尾部有帮助:
Started GET "/users" for 127.0.0.1 at 2011-01-04 14:46:20 +0000
Processing by UsersController#index as HTML
SQL (0.5ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
User Load (0.1ms) SELECT "users".* FROM "users"
ActsAsTaggableOn::Tagging Load (0.5ms) SELECT "taggings".* FROM "taggings" WHERE ("taggings"."context" = 'languages')
ActsAsTaggableOn::Tag Load …Run Code Online (Sandbox Code Playgroud) ~~~已解决!~~~~~
我在Rails 4.2中使用acts_as_taggable_on gem,我有一个表单,您可以在其中输入标记,用逗号分隔.
<div class="form-group">
<%= f.label(:tag_list, "Tags (seperated by commas)") %><br />
<%= f.text_field(:tag_list, :class=>"formbox")%>
</div>
Run Code Online (Sandbox Code Playgroud)
标签工作正常,但当我回到文章并编辑它时,之前存在的逗号消失了!例如,如果我输入标签:
白色,轻盈,柔软
当我编辑时,这3个单独的标签将成为1个标签:
白光柔和
有谁知道这里发生了什么?丢失所有这些标签很糟糕,我希望能够在编辑时保留所有这些标签.
.--------------------------------- .------------解决方案 - -----------
所以我能够通过在每个标签项之间添加","来解决这个问题.可以这样做:
<div class="form-group">
<%= f.label(:tag_list, "Tags* (seperated by commas)") %><br />
<%= f.text_field(:tag_list, value: @article.tag_list.join(","))%>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在使用act-as-taggable-on来标记我的NewsItem和MediaItem模型.默认情况下,使用tag_list标记名称数组或直接通过tags用于ActsAsTaggableOn::Tags 集合的关联访问模型的标记会导致标记按任意顺序排列.我希望他们永远是字母表.除了维护标签创建顺序(通过acts_as_ordered_taggable在模型中使用)的方式之外,文档中没有提及设置默认顺序.
很显然,我可以每次我打电话时命令他们tags使用news_item.tags.order(:name),但我想这是整个应用程序的默认行为,并不想复制的排序,无论我需要使用标签.
如何设置模型以使其tags关联始终按字母顺序返回其标记?
这是您使用jQuery Tokeninput和ActsAsTaggableOn自动完成的方式.
在我的情况下,我使用嵌套的形式,但它不重要.以下所有内容都是有效的代码.
产品型号:
attr_accessible :tag_list # i am using the regular :tag_list
acts_as_taggable_on :tags # Tagging products
Run Code Online (Sandbox Code Playgroud)
产品控制器:
#1. Define the tags path
#2. Searches ActsAsTaggable::Tag Model look for :name in the created table.
#3. it finds the tags.json path and whats on my form.
#4. it is detecting the attribute which is :name for your tags.
def tags
@tags = ActsAsTaggableOn::Tag.where("tags.name LIKE ?", "%#{params[:q]}%")
respond_to do |format|
format.json { render :json …Run Code Online (Sandbox Code Playgroud) ruby autocomplete ruby-on-rails acts-as-taggable-on ruby-on-rails-3
我已将我的应用程序的rails版本升级到4.1.0.在升级时,我已经从Gemfile升级了所有宝石,Gemfile也将act-as-taggable-on升级到3.1.1.
但升级后,当我尝试在相应的对象上添加标签时,它失败并出现以下错误.
post = Post.last
post.tag_list = "development"
post.save
Run Code Online (Sandbox Code Playgroud)
错误:列"taggings_count"不存在
细节错误在这里:
SQL (0.9ms) UPDATE "tags" SET "taggings_count" = COALESCE("taggings_count", 0) - 1 WHERE "tags"."id" = 3146
PG::UndefinedColumn: ERROR: column "taggings_count" does not exist
LINE 1: UPDATE "tags" SET "taggings_count" = COALESCE("taggings_coun...
^
: UPDATE "tags" SET "taggings_count" = COALESCE("taggings_count", 0) - 1 WHERE "tags"."id" = 3146
(0.3ms) ROLLBACK
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "taggings_count" does not exist
LINE 1: UPDATE "tags" SET "taggings_count" = COALESCE("taggings_coun...
^
: UPDATE "tags" SET "taggings_count" …Run Code Online (Sandbox Code Playgroud) 我正在努力将插件转换为gem.在其中一个模型中,我使用的是acts_as_taggable_on,它看起来像这样
class BlogPost < ActiveRecord::Base
acts_as_taggable
....
end
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我收到此错误:
undefined local variable or method `acts_as_taggable' for #<Class:0x000000060799b8>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪如下所示:
activerecord (3.1.0) lib/active_record/base.rb:1082:in `method_missing'
test_gem (0.1.0) app/models/blog_post.rb:28:in `<class:BlogPost>'
test_gem (0.1.0) app/models/blog_post.rb:2:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
acts_as_taggable gem包含在我的gemspec文件中,并安装在系统上.
gem install acts-as-taggable-on
Successfully installed acts-as-taggable-on-2.1.1
1 gem installed
Installing ri documentation for acts-as-taggable-on-2.1.1...
Installing RDoc documentation for acts-as-taggable-on-2.1.1...
Run Code Online (Sandbox Code Playgroud)
我不知道会出现什么问题 - 请帮帮我
我有一个Post模型,我通过ActiveAdmin访问.它也可以使用acts_as_taggable_on gem进行标记.因此,管理员可以添加,编辑或删除特定帖子中的标签.
在管理面板中为资源添加标记功能的常规方法是在admin/posts.rb中执行此操作:
ActiveAdmin.register Post do
form do |f|
f.inputs "Details", :multipart => true do
f.input :tag_list
# and the other irrelevant fields goes here
end
f.buttons
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我希望从多选表单字段中选择标记,而不是在文本字段中手动输入(就像上面的代码一样).所以我试过这样做:
f.input :tag_list, :as => :select,
:multiple => :true,
:collection => ActsAsTaggableOn::Tag.all
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.这实际上创建了带有名称的一些整数值的新标签,并将它们分配给该帖子.有人告诉我需要额外的代码才能使用.
关于如何做到这一点的任何线索?这是我的模型,以防万一:http://pastie.org/3911123
提前致谢.
ruby-on-rails acts-as-taggable-on ruby-on-rails-3 activeadmin ruby-on-rails-3.2
我已成功设置acts_as_taggable_on我的模型.正如预期的那样,当我用逗号分割标签时,它会正确地分割标签.
但是,当我编辑帖子时,字段会自动填充标签以进行编辑,但逗号现在已经消失.
这意味着如果我点击保存而不将它们放回,则标签现在变为所有标签.
我尝试过使用ActsAsTaggableOn.delimiter = ' '哪个有效,当它们是一个单词标签时.但现在我有一个问题,如果我有一个双字标签,当我编辑并保存帖子时,两个单词标签现在变成一个单词标签.
任何人可能对此有任何帮助将不胜感激.
谢谢!
ruby ×3
tags ×3
activeadmin ×1
autocomplete ×1
comma ×1
delimiter ×1
edit ×1
gem ×1
heroku ×1
postgresql ×1
sql ×1