我有一个含有许多成分的食谱。我希望能够动态地对我的成分进行排序,并且仅在点击整个表单的提交按钮时将更改发送到控制器一次。我一直在谷歌搜索这段时间,我确实看到很多关于这个的问题,虽然没有任何答案......我对rails非常熟悉,但刚开始使用javascript。
查看
<% form_for @receipe do |r| %>
<%= r.text_field.name %>
<% f.fields_for :receipe_ingredients do |ri| %>
<%= ri.fields_for :ingredients do |i| %>
<%= link_to i.object.name, ingredient_path(i.object.id) %>
<%= ri.text_field :specification %>
<% end %>
<% end %>
<%= r.submit "save" %>
<% end %>
<%= link_to "add more ingredients", ingredients %>
答案 0 :(得分:0)
你没有提到你是使用jquery还是原型。我假设Prototype,请检查:
http://madrobby.github.com/scriptaculous/sortable-lists-demo/
答案 1 :(得分:0)
将成分放在列表中,而不是使用javascript使它们可排序。 This seems llike a good plugin for that.
比提交时,阻止通常用
等重新加载页面$("#submit").preventDefault();
使用ajax将javascript数组中的数据发送到rails应用程序。将服务器上的旧订单与javascript数组中的新订单进行比较,并对其订单进行调整。我认为这应该有所帮助。
我不想使用ajax,每次用户更改顺序时,以json格式在javascript格式中加载javascript数组,并使控制器使用该json字符串查找项目的顺序。