【问题标题】:Rails AJAX partial without submitting formRails AJAX 部分不提交表单
【发布时间】:2014-09-29 17:22:13
【问题描述】:

我想创建一个有两列的页面:

|制作披萨的表格 |推荐的比萨饼 |

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

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

有没有一种简单的方法可以用 Rails 做到这一点?

我只想在每次发生模糊事件时抓取未提交的 @pizza 对象并将其发送到部分...

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax forms


    【解决方案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 以及您想要调用的任何事件都可以轻松调用它,当您调用相应的方法时,它将分别更新部分文件

    【讨论】:

    • 这非常简洁,正是我所需要的。谢谢。
    【解决方案2】:

    我想你给了自己答案。只需将事件侦听器附加到表单上的 keyup 并通过 ajax 提交。

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

    【讨论】:

    • 对,但是有没有简单的方法来重新加载部分?或者,我是否必须对Suggested_pizzas 部分进行AJAX 调用,获取该数据,然后.html() 将响应放入页面上的div 中?我只是想知道 Rails 是否有一个简单的方法来重新加载部分?
    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多