2014-09-29 51 views
0

我想创建一个页面,其中有两列:Rails AJAX部分不提交表格

|创建比萨|的表单建议的比萨饼|

当您使用左栏的表格创建披萨时,右侧的栏目开始建议您可以根据左定制命令订购不同类型的披萨。

我发现的所有教程都会将部分重新加载到表单提交,但是,我希望每次输入模糊或选择更改时都要重新加载部分。

有没有一种简单的方法来做到这一点与Rails?

我想只抓未提交@pizza对象,并发送一个模糊事件发生的局部每次...

回答

1

控制器

def my_pizza 
    @pizza = Pizza.all 
    respond_to do |format| 
    format.js 
    end 
end 

视图

my_pizza.js.haml

$('#pizza').html('#{j render(partial: 'pizzas/piza', collection: @pizzs)}'); 

条路线

get 'pizza' => "pizza#my_pizza" 

js的内部文件

$(document).on('change', 'input', function() { 
    // you can create your ajax call which will call the my_pizza method in which action you want to call. 
}); 

您可以添加AJAX,你想叫你可以很容易地把它叫做什么都事件,当你将调用各自的方法,它将分别更新部分文件

+0

这是非常整洁,正是我所需要的。谢谢。 – 2014-09-29 17:56:58

0

我想你给自己的答案。只需将一个事件监听器附加到表单上的关键字并通过ajax提交即可。

$('form').on('blur', function() { 
    // submit ajax and do something with the response here 
}); 
+0

对,但有没有简单的方法来重新加载部分?或者,我是否必须对partial_pizzas进行AJAX调用,将该数据和'.html()'响应转换为页面上的div?我只是想知道如果Rails有一个简单的方法来重新加载部分? – 2014-09-29 17:35:38