Ruby on rails 3 在标记云问题上充当标记对象
我不熟悉rails。关于这个插件有一个问题。我已经阅读了官方的自述文件和其他一些主题,但我仍然无法使它工作。 我已经安装了它,它非常适合创建标签,但我无法制作tagcloud 我做完了Ruby on rails 3 在标记云问题上充当标记对象,ruby-on-rails-3,acts-as-taggable-on,Ruby On Rails 3,Acts As Taggable On,我不熟悉rails。关于这个插件有一个问题。我已经阅读了官方的自述文件和其他一些主题,但我仍然无法使它工作。 我已经安装了它,它非常适合创建标签,但我无法制作tagcloud 我做完了 module SitesHelper include ActsAsTaggableOn::TagsHelper end class SiteController < ApplicationController def tag_cloud @tags = Site.
module SitesHelper
include ActsAsTaggableOn::TagsHelper
end
class SiteController < ApplicationController
def tag_cloud
@tags = Site.tag_counts_on(:tags)
end
end
模块站点服务器
包括ActsaStaggaleon::TagsHelper
结束
类SiteController<应用程序控制器
def tag_云
@标记=站点。标记计数(:标记)
结束
结束
这个观点让我感到很惊讶
<% tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class| %>
<%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
<% end %>
:tag,:id=>tag.name},:class=>css\u class%>
参数数量错误(至少1个)
24:标签:
25:
26:
27:
28::tag,:id=>tag.name},:class=>css\u class%>
29:
30:
我做错了什么?我认为它向类添加了方法,因此您可以直接访问它们 你可以试试这个:
<h2>Tag Cloud</h2>
<% if Site.tag_counts.length > 0 -%>
<% tag_cloud Site.tag_counts, %w(css1 css2 css3 css4) do |tag, css_class| -%>
<%= link_to tag.name, home_tag_path(tag), :class => css_class -%>
<% end -%>
<% else -%>
<%= content_tag :p, 'No tags' -%>
<% end -%>
标记云
0 -%>
css_类-%%>
这就是我用过的方法,而且很有效
注意:当您从sites视图中调用tag_cloud时,它正在调用控制器中的相应定义。您希望在tags_helper(插件中)中调用tag_cloud,因此您也希望删除控制器中的tag_cloud定义
一些有助于理解这一点的好主题包括:
- 方法查找(向右一步, 然后向上)和
- Self(如果从ruby/rails开始,完全理解会很好)
- 元编程(如果您不熟悉该术语)
希望能有所帮助。我自己在这个例子中也遇到了同样的问题。 还有其他一些问题。 为了满足我的需要,我修正了我遇到的问题,尽管它们可能会稍微偏离我的初衷 我通过将(:tags)上的tags=Site.tag计数移动到index方法中来修复它。然后我删除了tag_cloud方法。(反正也不太平。) 我还将链接_更改为重定向到控制器,用于标记的项目。 这涉及:
- 将文本设置为tag.name
- 改变道路
- 删除
和:action=>:tag
:id=>:tag.name
- 添加要通过参数传入的键值标识符
def index
@list = List.new
@tags = List.tag_counts_on(:tags)
end
我完成的视图片段:
<% tag_cloud(@tags, %w(tag1 tag2 tag3 tag4)) do |tag, css_class| %>
<%= link_to tag.name, lists_path(:id => tag.name), :class => css_class
tag.name),:class=>css\u类
<% tag_cloud(@tags, %w(tag1 tag2 tag3 tag4)) do |tag, css_class| %>
<%= link_to tag.name, lists_path(:id => tag.name), :class => css_class