【问题标题】:how to send remote form params如何发送远程表单参数
【发布时间】:2014-05-27 22:45:20
【问题描述】:

我有一个表单,它使用了几个输入字段,这些字段被 remote: true 和自定义控制器操作 ajaxified。这样 UJS 驱动程序只发送给定的表单输入作为参数。我想要完成的是一个 ajaxified 输入字段,它将在它的“范围”之外发送一个字段的值作为params。你有什么建议?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 ujs


    【解决方案1】:

    让我解释一下 ajax-rails 和 remote=> true 的整个流程,您可以使用以下方式执行此操作,并且可以获取方法中的所有参数。

    首先,当您使用 remote=> true 时,表单将提交或调用您在表单中定义的操作,例如:

    <%= form_tag({:controller => 'my', :action => 'my_data'},:id => 'filter_form', :remote => true) do %>
     #code here
    <%= submit_tag 'save', :name => 'commit'%>
    <%end%>
    

    现在上面的代码将转到我的控制器中的 my_data 操作,

    你可以在这里定义响应类型

    def my_data
    #actions on data here
    respond_to do |format|
    format.js
    end
    

    现在你必须创建一个 .js 文件,命名为动作名称....

    my_data.js.erb
    

    这里是表单的整体效果,您可以通过 jquery 和 javascript 编写和更新文档元素。

    对于每个输入,您只需分配一个类并编写一个在输入框更改时调用的方法。另一件事是,当您想在单个方法中执行时,每个输入都有一个唯一的 ID,也可以在 params 中发送做任何你想做的事情。

    【讨论】:

      【解决方案2】:

      Rails' JQuery UJS 只是 Rails 用来代表您调用 ajax 请求的依赖项。这意味着您的问题与 JQuery UJS 无关,而是与如何使用 ajax 整体处理有关

      您通常会通过将任何额外数据附加到 Ajax 请求来处理它:

      <%= link_to "Link", new_post_path(params: "here"), remote: true %>
      

      如果您想创建一个“ajaxified”字段,您可能必须使用手动 ajax 调用来捕获 change 事件,以便将数据发送到您的事件:

      #app/assets/javascripts/application.js
      $('input[name="element"]').on("change", function(){
          $.ajax({
              url: "url",
              data: $(this).serialize()
          });
      });
      

      然后,如@baharat Soni 所述,您将能够使用respond_to 处理服务器上的请求

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多