J'ai le tableau suivant dans la base de données et aussi le modèle créé pour cela.rails mise à jour l'action ne fonctionne pas
|id |name |description |created_date |updated_date |
-----------------------------------------------------------------------
|1 |HELLO |greeting |2017-09-28 18:51:51 |2017-09-28 18:51:51|
model.rb
class Person < ApplicationRecord
has_many :person_activities
validates :name, uniqueness: true
end
Je veux créer une action update
dans contrôleur. Il mettra à jour le nom et la description en fonction du nom passé. Par exemple, je souhaite mettre à jour le nom HELLO à HI. Comment puis-je créer une action de mise à jour pour cela?
J'ai essayé suite à l'action update
dans contrôleur mais il a frappé l'habitude de l'action update
def update
byebug
redirect_to Person.find(name: params[:id]).tap { |person|
person.update!(person_params)
}
end
private
def person_params
params.require(:person).permit(:name)
end
de routes.rb
resources :person, only: [:index, :show, :create, :update, :destroy], defaults: { format: :json }
d'essai Essayé comme celui-ci http://localhost:1111/person/HELLO
et passant { name: 'HI'}
dans params du corps. J'utilise postier pour les tests.
vous devez ajouter une entrée dans 'config/routes .rb' - Normalement, la mise à jour se fait via le type de requête HTTP 'PUT', donc il ne sera pas accessible en tapant une URL dans votre barre d'adresse (qui envoie seulement une requête GET). Vous devrez soit utiliser un client HTTP comme Postman pour le tester, soit écrire un formulaire HTML. Voir http://guides.rubyonrails.org/form_helpers.html –
J'ai l'entrée ajoutée dans routes.rb. J'utilise postier s'il vous plaît voir la ligne à la fin –
Avez-vous mis la méthode HTTP dans le facteur à PUT? –