вспомогательная функция не найдена - PullRequest
1 голос
/ 23 мая 2010

Я следую инструкциям по адресу: 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) если я добавлю вспомогательный метод, я получу: 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 ]

2 голосов
/ 23 мая 2010

1.

Методы, определенные в контроллере, не доступны для представлений, если вы не добавите (как вы упомянули) вызов helper_method.

2

Ваш метод tag_cloud, который вы определили в качестве помощника в вашем контроллере, не принимает никаких параметров, но вы пытаетесь вызвать tag_cloud с @tags, %w(css1...) и блоком.

Ваш метод tag_cloud вернет переменную экземпляра @tags и все.

Из поста, который вы указали, над которым вы работаете, вы include TagsHelper в вашем ApplicationHelper? Я предполагаю, что это определяет вспомогательный метод tag_cloud, который будет принимать параметры, которые вы пытаетесь передать.

1 голос
/ 18 ноября 2010

У меня та же проблема. Как и OP, перемещение вспомогательного метода tag_cloud в TagHelper, казалось, избавило от некоторой проблемы, но в процессе выдает ошибку «неправильное число аргументов».

Кбрулак сказал, что нашел работу вокруг. Можете ли вы обновить нас и, возможно, отправить PM авторам "Acts-as-taggable-on" на https://github.com/mbleigh/acts-as-taggable-on

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...