如何发送远程形式参数

时间:2014-04-14 04:56:02

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

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

2 个答案:

答案 0 :(得分:0)

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

首先使用遥控器=>如果是,则表单将提交或调用您在表单中定义的操作,如下例所示:

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

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

您可以在此处使用

定义respone类型
def my_data
#actions on data here
respond_to do |format|
format.js
end

现在你必须创建一个名为action name ....的<.js文件。

my_data.js.erb

这里可以通过jquery和javascript编写和更新文档元素的形式的整体影响。

对于每个输入,您只需指定一个类并编写一个在输入框将改变时调用的方法。当您想要在单个方法中执行时,每个输入都有一个唯一的ID,在params中也发送它并做任何你想做的事。

答案 1 :(得分:0)

Rails' JQuery UJS只是Rails用来代表您调用ajax请求的依赖项。这意味着你的问题与JQuery UJS并不特别相关,而是如何用ajax整体处理它

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

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

如果你想创建一个&#34; ajaxified&#34;字段,您可能必须使用手动ajax调用来捕获change事件,允许您将数据发送到您的事件:

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

然后,如@baharat Soni所述,您将能够使用respond_to

在服务器上处理请求