2010-12-15 11 views
0

Je sais qu'il existe des moyens de mettre des aides à la disposition des contrôleurs, mais que c'est généralement une mauvaise forme. Comment les éléments suivants doivent-ils être retravaillés pour éviter cela?Rails assistant pour les vues et les contrôleurs?

J'ai un assistant Contacts appelé "fullname" qui combine les noms et prénoms d'un contact.

Un schéma partiel appelé sous-en est rendu dans la présentation de l'application, et contient le code suivant:

<section id="subheader"><%= @subheader %></section> 

Les contrôleurs régler la valeur de @subheader.

Le problème est que je veux souvent "fullname" dans @subheader. Mais cela signifie accéder à l'aide du contrôleur. Cette méthode fullname devrait-elle résider ailleurs?

Répondre

2

Avec quelque chose comme fullname je définis généralement une méthode sur le modèle lui-même.

Si la méthode fullname faisait un certain type de formatage HTML, je garderais ces parties dans un assistant.

+0

Ah, oui. Merci. :-) – glortho

1

Puisque le titre de votre question pourrait attirer les téléspectateurs à la recherche d'une réponse différente, je vais répondre à la question «Puis-je utiliser des aides de rails dans mes contrôleurs»? Il y a des utilisations légitimes pour cela, voici donc la manière la plus propre de le faire:

Dans le fichier helpers, enveloppez le code que vous voulez accéder à un modèle comme ceci:

module HelperModuleName 
    [helper code here] 
end 

Emballage uniquement le code besoin d'utiliser dans vos contrôleurs (par opposition à inclure tous les helpers utilisant include ApplicationHelper) est une bonne idée car cela réduit la possibilité de conflits de noms de méthodes et vous oblige à être plus délibéré sur votre choix d'utiliser des aides dans les contrôleurs.

comprennent maintenant le module dans votre application_controller.rb:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    include HelperModuleName 
end 
Questions connexes