J'ai un modèle de projet qui comporte de nombreuses tâches. Le projet et les tâches peuvent avoir de nombreuses discussions, et j'ai donc fait des discussions modèle polymorphique (voir ci-dessous).Lien vers une action personnalisée dans les associations polymorphes
Je souhaite pouvoir cliquer sur le lien et marquer 'discussion' comme terminé.
La façon dont je suis allé le faire est de faire une action personnalisée dans le 'contrôleur de discussion' qui change la valeur booléenne de l'attribut 'finished' de false à true. Comment rendre link_to helper dans la page de discussion de discussion route vers cette action personnalisée dans le contrôleur de discussions? Aussi, est-ce la meilleure pratique pour le faire?
modèle Discussion
1 class Discussion < ActiveRecord::Base
4 belongs_to :user
5 belongs_to :discussionable, :polymorphic => true
28 end
modèle de projet
1 class Project < ActiveRecord::Base
7 has_many :tasks, :dependent => :destroy
8 has_many :discussions, :as => :discussionable, :dependent => :destroy
24 end
modèle Tâche
1 class Task < ActiveRecord::Base
7 belongs_to :project
14 has_many :discussions, :as => :discussionable, :dependent => :destroy
27 end
Alors fa r mon aide link_to ressemble ci-dessous, mais il travail ne marche pas (ne marche pas frapper l'action personnalisée « arrivée » comme je veux) ...
Discussion montrent
7 <%= link_to 'Finish discussion', polymorphic_path([@parent, @discussion]), :action => 'finish' %>
C'est cette action de finition personnalisée . dans le contrôleur de discussion (je before_filter qui définit cette variable @discussion de params [: id])
33 def finish
34 if @discussion.update_attribute(:finished, true)
35 flash[:notice] = "it worked"
36 else
37 flash[:alert] = 'You must be an admin to do that'
38 end
39 end
J'ai pas tripoté routes.rb, comme je ne sais pas si Je dois.
routes.rb
1 PrjctMngr::Application.routes.draw do
13
14 # PROJECTS
15 resources :projects do
16 resources :tasks
17 resources :discussions
18 end
19
20 # TASKS
21 resources :tasks do
22 resources :subtasks
23 resources :discussions
24 end
31
32 # DISCUSSIONS
33 resources :discussions do
34 resources :comments
35 end
36
37 end
que je reçois cette erreur> ActionView :: Template :: Erreur: méthode non définie 'finish_task_discussion_path 'pour # <#: 0xb3865868> ..... Pourquoi est-ce? De plus, je n'ai pas touché mon fichier routes.rb pour prendre en charge cette action personnalisée. Devrais-je avoir? –
oFca
en effet vous devriez avoir, updatad réponse –
J'ai ajouté les routes à la question, pouvez-vous s'il vous plaît utiliser cela pour me montrer comment je devrais l'éditer? – oFca