У меня просто немного "дух", но у меня есть список пунктов меню, которые я сделал сортируемыми и сериализовал данные, используя метод сериализации jquery ui. Я отправляю запрос ajax и вижу следующие параметры в webrick:
Параметры: { "sort" => "menu[]=2&menu[]=3&menu[]=1&menu[]=4" }
В конечном счете, я просто хотел бы иметь список 2,3,1,4
и написать запрос sql для обновления sort_order для этих элементов. Большинство учебных пособий, которые я обнаружил до сих пор, содержали только примеры серверной части PHP, и люди просто набирают params['sort']['menu']
, который возвращает 2,3,1,4
, но в Ruby, похоже, возвращает пустой объект.
Это мой код jquery:
$(document).ready(function() {
$(".sortable").sortable({
update : function (){
$.ajax({
type : "POST",
url : "/page_parts/sort/",
data : {
sort : $(".sortable").sortable('serialize')
}
});
}
});
});
Это моя разметка:
<ul class="sortable">
<% @page_parts.each do |f| %>
<li id="menu_<%= f.id %>"><%= f.title %></li>
<% end %>
</ul>
Это код моего контроллера:
def sort
raise params['sort']['menu'].inspect
end
Это вернется:
Started POST "/page_parts/sort/" for 127.0.0.1 at 2011-10-12 06:19:38 -0400
Processing by PagePartsController#sort as */*
Parameters: {"sort"=>"menu[]=1&menu[]=2&menu[]=4&menu[]=3&menu[]=5"}
Completed 500 Internal Server Error in 0ms
RuntimeError ("menu"):
app/controllers/page_parts_controller.rb:9:in `sort'
Если, с другой стороны, я пытаюсь:
def sort
raise params['sort'].inspect
end
Я получаю:
Started POST "/page_parts/sort/" for 127.0.0.1 at 2011-10-12 06:19:10 -0400
Processing by PagePartsController#sort as */*
Parameters: {"sort"=>"menu[]=1&menu[]=2&menu[]=3&menu[]=5&menu[]=4"}
Completed 500 Internal Server Error in 0ms
RuntimeError ("menu[]=1&menu[]=2&menu[]=3&menu[]=5&menu[]=4"):