如何发送远程表单参数
Posted
技术标签:
【中文标题】如何发送远程表单参数【英文标题】:how to send remote form params 【发布时间】:2014-05-27 22:45:20 【问题描述】:我有一个表单,它使用了几个输入字段,这些字段被 remote: true
和自定义控制器操作 ajaxified。这样 UJS 驱动程序只发送给定的表单输入作为参数。我想要完成的是一个 ajaxified 输入字段,它将在它的“范围”之外发送一个字段的值作为params
。你有什么建议?
【问题讨论】:
【参考方案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
处理服务器上的请求
【讨论】:
以上是关于如何发送远程表单参数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Express 和 Node.js 从表单发送参数