2010-01-19 9 views
4

Je veux montrer un modèle simple HTML, donc j'ajouté une nouvelle action vide à mon contrôleur:action non trouvé

def calulator 
end 

et a créé la calculator.html.erb vue. A ensuite ajouté un lien vers elle:

<%= link_to 'Calculator', {:controller => "mycontroller", :action => "calculator"} %> 

Lorsque je clique sur mon journal, il montre l'erreur suivante:

ActionController::UnknownAction (No action responded to show. Actions: calculator, create, destroy, edit, index, new, and update): 

Pourquoi est à la recherche d'une action "montrer"? J'ai map.resources pour le contrôleur, comme je l'ai fait avec des échafaudages

Des idées?

Répondre

5

Vous devez ajouter un itinéraire personnalisé pointant vers l'action 'calculatrice'. Quelque chose comme ceci:

map.connect 'mycontroller/calculator', :controller => 'mycontroller', :action => 'calculator' 
+1

Cela fonctionne très bien. J'ai compris que la ligne doit être ** avant ** line.resources, quand le bon sens m'a dit qu'il devrait être après. Merci! –

1

Vous pouvez définir les membres et les collections de ressources.

map.resources :samples, :member => {:calculator => :get} 

Le membre signifie qu'il s'agit d'une instance des ressources. Par exemple/samples/1/calculatrice. S'il ne concerne pas une instance, vous pouvez le définir pour la collection et accéder via/samples/calculator.

map.resources :samples, :collection => {:calculator => :get} 

Cela crée aussi une méthode d'assistance calculator_samples_path pour la collecte et calculator_sample_path(sample) pour un membre. Pour plus d'informations, consultez le Railscast Episode 35.

0

Vous obtenez Aucune action n'a répondu pour afficher car le contrôleur est routé comme map.resources. Lorsque vous faites cela, les rails met en place plusieurs itinéraires pour vous. Dont un est show, qui associe tous les obtenir demande correspondant à /MyController/somevalue à l'action show avec somevalue comme id (params[:id]). En mycontroller, il n'y a aucune action show, comme vu dans le message d'erreur.

Pour résoudre ce problème, la réponse de Nils ou de Trevoke devrait fonctionner correctement.

map.resources documentation