2014-08-27 2 views
0

Я создал новое действие на ClientsController под названием update_establishments. У меня есть форма для Client, которую я хочу назвать этим действием без создания нового представления. Действие создаст новое представление.RoR - Вызовите новое действие без вида на форме

 
clients_controller.rb 
    def update_establishments 
     create_zip 
     respond_to do |format| 
     if @client.update(client_params) 
     set_zip 
     format.html { redirect_to @client, notice:'Estabelecimento adicionado com sucesso.'} 
     format.json {head :no_content} 
     else 
     format.html { render action: 'edit'} 
     format.json { render json: @client.error, status: :unprocessable_entity } 
     end 
    end 
    end  


clients/_locations_form.html.erb 

    form_for @client, :url=>{:action=>'update_establishments'} do |form| %> 
    ... 

это выдает ошибку ActionController::UrlGenerationError in Clients#add_establishments с объяснением No route matches {:action=>"update_establishments", :id=>"35", :controller=>"clients"}

Я не сделал никаких изменений на routes.rb

Мне нужно создать представление называется clients/update_establishments, чтобы сделать эту работу делать?

ответ

1

Я думаю, вам нужно добавить новый маршрут к файлу routes.rb, что-то вроде:

resources :clients do 
    member do 
    patch 'update_establishments' 
    end 
end 

и обновления метод коммутационной 'для вашей формы:

form_for @client, :url=>{:action=>'update_establishments'}, html: {method: "patch"} do |form|

Смежные вопросы