2017-10-07 1 views
0

Son peu difficile pour moi d'expliquer ce que je veux, mais je vais faire de mon mieux.Sauvegarder des données dans ruby ​​sur Rails sans ressources

J'ai créé un formulaire dans Rails où l'utilisateur peut remplir certains champs. Maintenant, une fois que ces champs sont remplis, je sais que je peux utiliser des ressources dans le routeur et définir une méthode de création dans le contrôleur qui va enregistrer les données dans la base de données. Cependant, ce que je veux, c'est transmettre les données sauvegardées dans le formulaire à mon contrôleur. Ensuite, créez une méthode personnalisée dans le contrôleur qui sera comme la méthode Create traditionnelle, mais au lieu de passer des paramètres en utilisant la méthode Resource, je veux les passer en paramètre. Est-il même possible Rails:

Ceci est mon point de vue actuel pour créer la forme:

<h1> Please add a new product</h1> 
<%= form_for @product do |p| %> 
    <p> 
    <%= p.label 'Product Name' %><br/> 
    <%= p.text_field :product_name %><br/> 
    </p> 
    <p> 
    <%= p.label 'Description' %><br/> 
    <%= p.text_area :description %><br/> 
    </p> 
    <p> 
    <%= p.label 'Price' %><br/> 
    <%= p.text_field :price %><br/> 
    </p> 
    <p> 
    <%= p.label 'Rating' %><br/> 
    <%= p.text_field :rating %><br/> 
    </p> 

<% end %> 

Alors peut-être que je me sers en forme Construit en Ruby, mais je veux juste passer des paramètres de View au contrôleur de méthode.

Merci pour votre aide !!!

+0

Lire http://guides.rubyonrails.org/routing. html Vous pouvez toujours définir des itinéraires personnalisés comme 'post '/ latest_products' => 'products # latest_create'' – kiddorails

Répondre

0

Je vais vous aider à résoudre votre problème. Procédez comme suit:

  1. Créer votre itinéraire en routes.rb:

    get "/create_product" => 'products#create_product', as: :create_product 
    

    ou si vous voulez passer params par la méthode post:

    post "/create_product" => 'products#create_product', as: :create_product 
    
  2. maintenant changer votre point de vue classer selon le nouvel assistant d'itinéraire:

    form_for (@products, url:{:controller=>'products', :action=>'create_product'}, html:{method:'post'}) 
    
  3. Maintenant, la dernière étape modifier votre contrôleur:

    def create_product 
    #your form values are avaible here in params variable 
    pp params 
    puts params[:Price] 
    #save your params into ur db 
    end 
    

Note: Je suppose que vous avez déjà modèle product.rb