如何动态排序元素并在提交时保存多个更改

时间:2011-01-23 17:13:15

标签: javascript ruby-on-rails sorting submit

我有一个含有许多成分的食谱。我希望能够动态地对我的成分进行排序,并且仅在点击整个表单的提交按钮时将更改发送到控制器一次。我一直在谷歌搜索这段时间,我确实看到很多关于这个的问题,虽然没有任何答案......我对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 %> 

2 个答案:

答案 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字符串查找项目的顺序。