3 votes

Comment utiliser une aide personnalisée via la méthode "helper" dans Rails 3 ?

J'essaie de créer une aide personnalisée comme celle-ci :

# app/controllers/my_controller.rb
class MyController < ApplicationController
  helper :my
  def index
    puts foo
  end
end

# app/helpers/my_helper.rb
module MyHelper
  def foo
    "Hello"
  end
end

Mais, j'ai obtenu l'erreur suivante :

undefined local variable or method `foo' for #<MyController:0x20e01d0>

Qu'est-ce que je rate ?

3voto

apneadiving Points 64660

En général, je fais le contraire : J'utilise les méthodes du contrôleur comme des aides.

class MyController < ApplicationController
  helper_method :my_helper

  private 
  def my_helper
    "text"
  end
end

1voto

DanneManne Points 13408

Les aides sont accessibles à partir des vues, et non des contrôleurs. Ainsi, si vous essayez de mettre ce qui suit dans votre modèle d'index, cela devrait fonctionner :

#my/index.html.erb
<%= foo %>

Si vous voulez accéder à quelque chose à partir du contrôleur, vous devez utiliser la syntaxe include au lieu de helper, mais ne le nommez pas comme un module helper dans ce cas.

0voto

user3345580 Points 56

Pourquoi ne pas simplement inclure l'aide comme un mixin dans le contrôleur...

class MyController < ApplicationController
  include MyHelper

  def index
    puts foo
  end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X