#ruby-on-rails-3 #forms #url #methods
#ruby-on-rails-3 #формы #url #методы
Вопрос:
Я хотел бы спросить, есть ли какое-то правило для действия, где находится форма отправки… Если у меня есть встроенный контроллер
def edit
@shop = Shop.find(params[:id])
end
Вид:
<%= form_for(@shop, :html => {:multipart => true}) do |f| %>
Итак, в исходном коде HTML есть:
<form accept-charset="UTF-8" action="/shops/11" class="edit_shop" enctype="multipart/form-data" id="edit_shop_11" method="post">
И это означает, что эта форма будет отправлена на : контроллер => ‘магазины’, : действие => ‘обновление’.
И я пытаюсь изменить это действие, где будет отправляться форма. Я пробовал что-то вроде этого:
<%= form_for(@shop, :url => {:controller => 'shops', :id => params[:id], :action => 'aupdate'}, :html => {:multipart => true}) do |f| %>
Но в исходном коде HTML есть
<form accept-charset="UTF-8" action="/shops/aupdate?id=11" class="edit_shop" enctype="multipart/form-data" id="edit_shop_11" method="post">
Я хотел бы спросить — как возможно, что форма не отправляется при действии update в этом случае? И что для этого нужно было бы сделать?
Спасибо
Ответ №1:
на ваш взгляд:
<%= form_for :shop, :url => {:controller => 'shops', :action => 'aupdate', :id=> params[:id]}, :html=> {:id => "some-form-id", :multipart => true} do |f| %>
.......
<% end %>
в ваших маршрутах:
resources :shops do
collection do
....
post :aupdate
....
end
end
в вашем контроллере:
def aupdate
....
puts "ssssssssssssssssssssssssssss",params.inspect
....
end
Комментарии:
1. Почему вы используете put? ваша форма отправляет запрос ‘post’. Используйте post в файле routes.rb. ресурсы: магазины помещают :aupdate, :on => :конец участника