2010-08-16 5 views
0

J'ai une méthode définie dans mon contrôleur que j'essaie de créer un bouton ou un formulaire à accéder.Méthode Rails d'accès définie dans le modèle via la vue dans les rails 3

Modèle

class DoThis < ActiveRecord::Base 

def take_action(a, b) 

end 

end 

Voir

<%= @do_this.take_action(@a, @b) %> 

Je voudrais convertir le code ci-dessus dans la vue à un button_to ou form_for mais ne peut pas comprendre comment.

Merci

Répondre

2

Vous ne devriez pas faire cela. Les modèles ne doivent jamais contenir de code de vue - ce n'est intentionnellement pas facile à faire, car cela casse MVC. Au lieu de cela, vous devez ajouter une fonction d'assistance dans votre fichier app/helpers/controller_name_helper.rb.

def take_action(obj) 
    button_to(...) 
end 

Ensuite, vous appelez simplement <%=take_action(@do_this) %> dans votre vue.

+0

Est-ce que je mettrais le code supplémentaire qui est actuellement défini dans la méthode "take_action" dans le modèle dans la nouvelle méthode "take_action" dans le helper du contrôleur? – Joey

+0

J'ai défini l'action dans l'aide du contrôleur au lieu du modèle et maintenant je rencontre un autre problème. Le code que j'avais à l'intérieur de "take_action" était à update.attributes sur un autre modèle - DoThisTwo. Le code a fonctionné correctement quand il a été défini dans le modèle DoThis original, mais maintenant je reçois un NoMethodError avec "attribut non défini" quand il est dans le CONTRÔLEUR de DoThis.J'ai ajouté attr_accessible pour l'attribut que je suis en train de mettre à jour dans DoThisTwo. suggestions? – Joey

+0

eu le travail thx – Joey

Questions connexes