Używam Railsów do automatycznego tworzenia obiektów podrzędnych na podstawie złożonego zestawu zagnieżdżonych atrybutów. Dlatego potrzebuję zagnieżdżać parametry w bardzo szczególny sposób. Oczywiście zdaję sobie sprawę, że mogę je skonstruować, ale chcę z JS, ale chciałbym, aby kolejność formularzy automatycznie pomogła w konstrukcji. W kontekście mam 2 kolumny, reprezentowane przez 2 <td>
s. Każda kolumna może utworzyć nowy rekord lub edytować istniejący rekord. Oczywiście, gdy istniejący rekord ma zostać zmodyfikowany, identyfikator rekordu musi zostać przekazany.Jakie zasady stosuje HTML podczas konstruowania parametrów?
wytopione HTML, jak następuje:
<td width="50%" style="padding-right:3%" class="logistic-details" data-type="logistics" data-typelogistics="delivery" data-instructions="test instructions" data-id="1" data-amount="20">
<span class="area-to-inject-amount-inputs" data-object="type_logistics" data-type="logistics" data-typelogistics="delivery">
<input class="labeler-response" name="type_logistics_attributes[][id]" type="hidden" value="1">
<input class="labeler-response" name="type_logistics_attributes[][instructions]" type="text" value="test instructions">
</span>
</td>
<td width="50%" style="padding-right:3%" class="logistic-details" data-type="logistics" data-typelogistics="pickup" data-instructions="" data-id="" data-amount="0">
<span class="area-to-inject-amount-inputs" data-object="type_logistics" data-type="logistics" data-typelogistics="pickup" data-actioned="charged">
<input type="hidden" name="type_logistics_attributes[][type_of_logistics]" value="pickup">
<input class="injected-amount-input" type="number" min="0" max="" placeholder="Amount" name="type_logistics_attributes[][charged_amounts_attributes][][amount]" value="20">
<span class="area-to-inject-type-of-amount">
<input type="hidden" name="type_logistics_attributes[][charged_amounts_attributes][][type_of_amount]" value="logistics">
</span>
<input class="labeler-response" name="type_logistics_attributes[][instructions]" type="text" placeholder="Enter address and instructions">
</span>
</td>
W tym przypadku, pierwszy <td>
modyfikuje istniejący zapis z identyfikatorem 1, podczas gdy drugi <td>
dostarcza parametry, aby utworzyć nowy rekord. Po utworzeniu nowego rekordu tworzone jest również dziecko charged_amounts
. Są to więc parametry spodziewałbym:
"type_logistics_attributes"=>[
{"id"=>"1", "instructions"=>"test instructions"},
{"type_of_logistics"=>"pickup", "charged_amounts_attributes"=>[{"amount"=>"40", "type_of_amount"=>"logistics"}], "instructions" => "123 Fake street"}
]
Zamiast tego, jestem coraz niżej:
"type_logistics_attributes"=>[
{"id"=>"1", "type_of_logistics"=>"pickup", "instructions"=>"test instructions", "charged_amounts_attributes"=>[{"amount"=>"40", "type_of_amount"=>"logistics"}]},
{"instructions"=>"123 Fake street"}
]
Jakoś granica <td>
nie działa i atrybuty dziecko charged_amount
jakoś zostały skupione do pierwszej istniejącej modyfikacji rekordu.
Dzięki!
Czy umieścisz również swój kod RoR, którego używasz do generowania tego znacznika? – Vucko
Czy możesz dostarczyć nam dane _ST POST_ przesłane przez twoją przeglądarkę? Najprostszy sposób na uzyskanie tego będzie z panelu Sieć w narzędziach programistycznych przeglądarki. – zwol