pourquoi mon remote_form_tag avec: action définie ne pas poster l'action?
-
26-09-2019 - |
Question
est ce que je l'ai utilisé avec remote_form_tag:
<% form_remote_tag(:url => {:controller => '/companies', :action => 'update'},
:update => 'tags') do %>
<%= text_field :company, :tag_list %>
<%= submit_tag 'Save' %>
<% end %>
Ceci est un Company.view, où la société est un modèle qui est acts_as_taggable_on activé.
Mon attente est que, via ajax, un poste est faite aux entreprises / 10 / mise à jour
Mais, au contraire, ce qui est affiché est:
http://localhost:3000/companies/10
et la réponse est:
No action responded to 10. Actions: create, destroy, edit, email_this_week, index, new, show, and update
Ceci est la méthode de mise à jour CompaniesController:
def update
@company = Company.find(params[:id])
if request.xhr?
# add the given tag to the company
@company.tags << params[:company][:taglist]
@company.save
render :partial => 'tags'
else
if @company.update_attributes(params[:company])
flash[:notice] = "Successfully updated company."
redirect_to @company
else
render :action => 'edit'
end
end
end
Aide ...?
DELETE /companies/:company_id/contacts/:id(.:forma
{:controller=>"contacts", :action=>"destroy"}
companies GET /companies(.:format)
{:controller=>"companies", :action=>"index"}
POST /companies(.:format)
{:controller=>"companies", :action=>"create"}
new_company GET /companies/new(.:format)
{:controller=>"companies", :action=>"new"}
edit_company GET /companies/:id/edit(.:format)
{:controller=>"companies", :action=>"edit"}
company GET /companies/:id(.:format)
{:controller=>"companies", :action=>"show"}
PUT /companies/:id(.:format)
{:controller=>"companies", :action=>"update"}
DELETE /companies/:id(.:format)
{:controller=>"companies", :action=>"destroy"}
La solution
Lorsque vous mettez à jour une ressource comme société avec ID 10, Rails utilisera la route RESTful:
PUT /companies/10
La méthode PUT est prise en compte lors de l'acheminement de votre demande. Extrait de vos itinéraires:
PUT /companies/:id(.:format)
{:controller=>"companies", :action=>"update"}
Ce comportement est correct pour Rails. Il suffit de mettre en œuvre la méthode de update
dans votre CompaniesController
.
Si vous désirez plus d'informations sur les itinéraires RESTful dans Rails, vérifiez sur ce document: http: // guides .rubyonrails.org / routing.html