我在刚有点“杜”的时刻,但我有我犯了排序,并已系列化使用jQuery用户界面的序列化方法的数据菜单项列表。我提交Ajax请求,并和看到的WEBrick以下参数:回报率,阿贾克斯,可排序,Seralize
参数:{ "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"):
请告诉我们你的表单标记和JavaScript代码。这看起来像是客户端的问题。如果你有'menu [] = 2&menu [] = 3'等等在查询字符串中,Rails会正确地将它变成一个数组('{“menu”=> [2,3,...]})。这里发生的事情是,你的jQuery代码正在将一个查询字符串并将其放入一个名为'sort'的GET参数(可能是URL编码它)。 –
这是要点标记 https://gist.github.com/1280787 – jdkealy
啊谢谢! 我知道我必须做一些愚蠢的事情。 – jdkealy