代码之家  ›  专栏  ›  技术社区  ›  cbrulak

在视图中找不到助手函数

  •  1
  • cbrulak  · 技术社区  · 16 年前

    我遵循以下说明: 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 的错误 塔格乌云

    wrong number of arguments (2 for 0) 在我上面示例代码的第1行。

    建议?

    解决方案

    <% @post.tags.each do |tag| %>
        <%= link_to( tag.name,tag,:class => "tag_cloud_item_link") %>
    <% end %>
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   theIV    16 年前

    在控制器中定义的方法对于视图是不可访问的,除非您添加(如您所提到的) helper_method 打电话。

    2.

    你的方法 tag_cloud 您在控制器中定义为助手的对象不接受任何参数,但您正在尝试调用 具有 @tags %w(css1...) ,&一个街区。

    塔格乌云 方法将返回 @标签 实例变量就是这样。

    include TagsHelper 在你的 ApplicationHelper ? 我猜这定义了 helper方法,该方法将接受您试图传入的参数。

        3
  •  0
  •   Dharman vijay    5 年前