Prześlij formularz, aby wykonać akcję UPDATE z indeksu


Próbuję stworzyć funkcję, która pozwoli użytkownikom edytować rekord klienta bezpośrednio ze strony indeksu. Gdy użytkownik kliknie przycisk „Edytuj”, wyświetlany jest częściowy obraz, który zastępuje elementy wejściowymi polami tekstowymi. Ale po kliknięciu przycisku „Aktualizuj klienta” pojawia się błąd:
"No route matches [POST] "/clients/27"

mogę

Stwórz

nowi klienci i

zniszczyć

klienci bezpośrednio z indeksu ... co robię źle z akcją odświeżania?
Częściowy:
<tr id="test">
<%= form_for Client.find(27), :method => :PUT do |f| %>
<td class="input">
<%= f.text_field :name, :value => "Test" %>
</td>
<td class="input">
<%= f.text_field :company %>
</td>
<td class="input">
<%= f.text_field :email %>
</td>
<td class="grayedOut"></td>
<td class="actions">
<%= f.submit "Confirm edit" %>
</td>
<% end %>
</tr>

Plik tras.rb:
resources :clients do
resources :projects do
resources :items
end
end

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mam to. Z jakiegoś powodu zagnieżdżanie formularza w tabeli wydaje się zakłócać sposób przesyłania formularza. Kiedy wyrenderowałem część poza tabelą, formularz nie miał problemu z wysłaniem akcji odświeżania.
Nadal nie wiem, co się dzieje. Moim rozwiązaniem tego problemu jest użycie elementów div zamiast tabel.
EDYTUJ: OK, więc zbadałem ten temat trochę dokładniej i stwierdziłem, że „formularze” nie są prawidłowymi elementami potomnymi
& < table & >
lub
& < tr & > . Aby rozwiązać ten problem, umieściłem tag[code]& <% = form_for% & >
wewnątrz pierwszego
& < td & >
, a tag
& <% end% & >
- wewnątrz ostatniego
& < td & >
. Teraz działa idealnie! Tak wygląda teraz moja cząstka: [/code]
<tr id="test">
<td class="input">
<%= form_for Client.find(27), :method => :PUT do |f| %>
<%= f.text_field :name, :value => "Test" %>
</td>
<td class="input">
<%= f.text_field :company %>
</td>
<td class="input">
<%= f.text_field :email %>
</td>
<td class="grayedOut"></td>
<td class="actions">
<%= f.submit "Confirm edit" %>
<% end %>
</td>
</tr>

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się