2017-05-17 1 views
-1

Ceci est mon routes.rbAucun résultat de route [POST] "/ additem" Essayer de créer un projet crud

Rails.application.routes.draw do 
    # The priority is based upon order of creation: first created -> highest priority. 
    # See how all your routes lay out with "rake routes". 

    # You can have the root of your site routed with "root" 
    root 'maincontroller#mainview', as: 'mainview' 


    get 'additem' => 'maincontroller#additem', as: 'additem' 

    resources :maincontroller 
end 

Ceci est mon contrôleur

class MaincontrollerController < ApplicationController 

    def item 
    @post = Post.find(params[:id]) 
    end 

    def additem 
    @post = Post.new(post_params) 
    @post.save 
    redirect_to @post 
    end 

    private 

    def post_params 
    params.require(:post).permit(:item_name, :item_desc) 
    end 
end 

Ceci est mon additem.html. erb

<h1>Item</h1> 
<%= form_for :post, url: additem_path do |f| %> 
    <p> 
    <%= f.label :Item_Name %><br> 
    <%= f.text_field(:Item_Name, {:class => 'form-control'}) %> 
    </p> 
    <p> 
    <%= f.label :Item_Description %><br> 
    <%= f.text_area(:item_desc, {:class => 'form-control'}) %> 
    </p> 
    <p> 
    <%= f.submit({:class => 'btn btn-primary'})%> 
    </p> 
<%end%> 
+0

Quel est votre message d'erreur? Pouvez-vous décrire plus clairement quel est le résultat souhaité? – Arne

+0

Je suis juste en train d'entrer un nom d'objet et une description – micomads

+0

Erreur son auto vous donner ans 'get 'additem' => 'maincontroller # additem', comme: 'additem'' changer cette ligne à ' post' additem '=>' maincontroller # additem ', as:' additem ' –

Répondre

0

la raison est la méthode par défaut lorsque vous soumettez un formulaire est POST.

Alors, il vous suffit de changer le verbe HTTP post

post 'additem' => 'maincontroller#additem', as: 'additem' 

Et vous pouvez vérifier les routes par:

rake routes 
+0

J'ai déjà changé cela mais une autre erreur se produit. c'est comme im dans la boucle des erreurs. lol – micomads

+0

Comment avez-vous eu cette erreur "Aucun itinéraire correspond [GET]"/add_item "? –

+0

Vous utilisez le droit' additem_path'? –

0

Vous pouvez le faire de cette façon.

dans les voies

Rails.application.routes.draw do 
    # The priority is based upon order of creation: first created -> highest priority. 
    # See how all your routes lay out with "rake routes". 

    # You can have the root of your site routed with "root" 
    root 'maincontroller#mainview', as: 'mainview' 


    get 'new_item' => 'maincontroller#new_item', as: 'new_item' 
    post 'add_item' => 'maincontroller#add_item', as: 'add_item' 

    resources :maincontroller 
end 

dans le contrôleur

class MaincontrollerController < ApplicationController 

    def item 
    @post = Post.find(params[:id]) 
    end 

    def new_item 
    @post = Post.new(post_params) 
    end 

    def add_item 
    @post = Post.new(post_params) 
    @post.save 
    redirect_to @post 
    end 

    private 

    def post_params 
    params.require(:post).permit(:item_name, :item_desc) 
    end 
end 

dans votre vue

<h1>Item</h1> 
<%= form_for :post, url: add_item_path do |f| %> 
    <p> 
    <%= f.label :item_Name %><br> 
    <%= f.text_field(:item_name, {:class => 'form-control'}) %> 
    </p> 
    <p> 
    <%= f.label :item_description %><br> 
    <%= f.text_area(:item_desc, {:class => 'form-control'}) %> 
    </p> 
    <p> 
    <%= f.submit({:class => 'btn btn-primary'})%> 
    </p> 
<%end%> 

J'espère que cela vous aidera.

+0

Cette erreur se produit après avoir changé les codes "constante non initialisée MaincontrollerController :: Post Source extraite (autour de ligne # 12): Ceci est ma ligne 12 "@post = Post.new (post_params)" – micomads

+0

avez-vous généré le modèle de poste? – akbarbin

+0

Oui, j'ai déjà généré le modèle de publication – micomads