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