我按照http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids上的说明将标签云添加到我的视图中:
在控制器中:
class PostController < ApplicationController
def tag_cloud
@tags = Post.tag_counts
end
end
我还在控制器中添加了tag_cloud
方法作为辅助方法
并在视图中:
<% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %> (line 1)
<%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %> (line2)
<% end %> (line 3)
然而:
1)如果我未在控制器中添加helper_method :tag_cloud
,则undefined method
会出现tag_cloud
错误
2)如果我在上面的示例代码的第1行添加了帮助方法:wrong number of arguments (2 for 0)
。
建议?
解 我最终没有在视图中执行我的示例代码。
相反,我这样做了:
<% @post.tags.each do |tag| %>
<%= link_to( tag.name,tag,:class => "tag_cloud_item_link") %>
<% end %>
答案 0 :(得分:2)
1
除非您添加(如您所述)helper_method
电话,否则视图无法访问控制器中定义的方法。
2
您在控制器中定义为帮助程序的方法tag_cloud
不会使用任何参数,但您尝试使用tag_cloud
@tags
来调用%w(css1...)
},&amp;一个街区。
您的tag_cloud
方法将返回@tags
实例变量,就是这样。
从您提供的帖子中,您已经include TagsHelper
中的ApplicationHelper
了吗?我猜这定义了一个tag_cloud
辅助方法,它将接受你试图传入的参数。
答案 1 :(得分:1)
我遇到了同样的问题。就像OP一样,将“tag_cloud”辅助方法移动到TagHelper似乎摆脱了一些问题,但在此过程中产生了“错误的参数数量”错误。
克布拉克说他找到了一份工作。您能否更新我们并可能将PM发送给https://github.com/mbleigh/acts-as-taggable-on 上的“Acts-as-taggable-on”作者答案 2 :(得分:0)
我到达这里是因为我想定义一种在视图中使用的方法。一个简单的答案是,它应该在模型中定义(例如,conversion.rb文件),而不是在帮助程序中定义。