2017-08-10 4 views
3

Donc, fondamentalement, je veux utiliser une méthode simple de commande sans paramètre:Ruby on Rails - méthode du contrôleur indépendant pour les pages statiques

def create_message 
    @a = Message.create(:body => "Hello") 
    @a.save 
    redirect_to messages_path 
end 

mais je suis le routage de la page d'accueil, contrôleur de pages:

def home 
end 

Je vais avoir un problème de trouver quoi écrire dans le fichier des itinéraires, j'ai essayé presque tout, y compris mais sans s'y limiter:

resources :pages do 
    collection do 
    get :create_message 
    end 
end 

Vues:

<%= link_to "Create Message", create_message_pages_path, class:"btn btn-primary"%> 

Erreur:

The action 'create_message' could not be found for PagesController 
+1

Et quel est le problème? –

+0

@IgorDrozdov l'erreur que je reçois est: L'action 'create_message' est introuvable pour PagesController –

+0

@ J.Foe vous devez définir la méthode 'create_message' dans votre' PagesController' – MrYoshiji

Répondre

0

Vous pouvez créer itinéraire personnalisé pour create_message comme celui-ci

Alors link_to serait:

#view 
<%= link_to "Create Message", create_message_path, class:"btn btn-primary"%> 
+0

Je reçois toujours la même erreur: L'action 'create_message' est introuvable pour PagesController –

+0

create_message est défini ** dans ** pages_controller.rb? –

+0

Dans quel contrôleur est l'action 'create_message'? – meshin

0

J'ai fait face à ce problème une fois, dans mon cas c'est une action de définition sous un bloc privé de contrôleur a donné le "L'action n'a pas pu être trouvé d'erreur". De votre question, je vois qu'il n'y a aucun problème à définir des routes et à les utiliser dans un fichier de vue. Veuillez vérifier si l'action create_message est définie sous private block dans le fichier pages_controller.rb. J'espère que cela aide.