我如何通过Ajax提交表单数据到我的Ruby控制器
How do I submit form data to my Ruby Controller via Ajax?
我的视图中有一个semantic_form_for,它设置了一个搜索过滤器,更多的过滤器通过一个按钮添加,通过JavaScript,添加更多的过滤器。
<%= semantic_form_for current_coach, :remote => true, :html => { :class => "custom-form rb-form", :id => "filter", :'data-url' => "#{roster_builder_coach_index_path}" } do |f| %>
<div class="filter_parent_container">
<% @search.conditions.each do |condition| %>
<%= render "filter", :condition => condition %>
<% end %>
</div>
<div class="bottom-info">
<div class="count">
<p class="num"><%= @athletes.count %></p>
<p>identified with this filter set</p>
</div>
<input type="submit" class="send-request" id="search-button" value="" />
<input type="button" class="add_filter" value="Add Another Filter" />
</div>
<div class="cl"> </div>
<% end %>
我需要表单通过ajax提交,但它不是。我正在检查控制器中的参数它们是:
{"action"=>"roster_builder", "controller"=>"coach"}
这是控制器(记录器正在检查参数):
def roster_builder
authorize! :access_roster_builder, current_coach
logger.info("**************");
logger.info("**************");
logger.info("**************");
logger.info("**************");
logger.info("**************");
logger.info(params);
@search = Search.new(sport: current_coach.primary_sport, conditions: params[:search])
@athletes = @search.query.page(params[:page]).per_page(8)
render "athletes" if request.format.js?
end
下面是Ajax调用:
$("#filter").submit(function(){
$.ajax({
url: $("#filter").attr("data-url"),
type: 'POST',
success: function(data) {
$(".results")[0].parentNode.removeChild($(".results")[0]);
}
});
});
在我使用:remote => true之前,它是可以工作的,但是我需要跨过滤器(包括通过JS添加的过滤器)的持久性,所以我需要Ajax来执行搜索,而不是进行页面刷新。Ajax正在发送表单数据,为什么params不能正常工作?我甚至尝试通过Ajax发送序列化的数据,但没有效果,如下所示:
$.ajax({
url: $("#filter").attr("data-url"),
type: 'POST',
data: $("form#filter").serialize(),
success: function(data) {
$(".results")[0].parentNode.removeChild($(".results")[0]);
}
});
任何帮助将不胜感激!
-
不要在表单的提交事件中同时使用
remote: true
和ajax调用。 -
如果您自己调用ajax,那么您肯定需要通过
data: $("form").serialize()
传递参数。 你必须返回false,或者在提交事件中执行e.p preventdefault(),因为你实际上不希望表单被提交,因为你自己用ajax调用发送数据。
这个插件处理ajax表单是伟大的:http://www.malsup.com/jquery/form/
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 为什么不't我的ruby代码与javascript文件一起插入
- coffee脚本没有'在我的ruby应用程序中不起作用
- 我的Ruby在轨道上删除功能不起作用
- Heroku 它的调用 JavaScript 代码不在我的 Ruby on Rails 项目中
- Ruby on Rails - 我的“checkall”复选框功能跳转到数据表上的页面
- 如何调试我的代码Ruby,Javascript,CSS
- 为什么在视图中解析时,我的嵌入式ruby json字符串用html实体编码
- 在我启动我的selenium脚本之前,如何在浏览器的localStorage中使用ruby设置item
- Bootstrap模式并没有留在我的ruby on rails项目中
- Ruby on Rails:为什么我的delete链接不起作用?
- 我如何通过Ajax提交表单数据到我的Ruby控制器
- 重写我的应用程序从ruby/rails到javascript/express.mongodb适合我的需要吗?
- 在我的ruby控制器函数中刷新网页
- ruby on rails-如何在HTML网页中包含我的Javascript文件和/或jQuery
- ruby on rails-将我的文件重命名为.js.erb可以在javascript中编写erb,但不能在erb中编写
- Ruby on Rails得到谷歌分析访问者计数和保存到我的应用程序数据库
- 我从Ruby到JavaScript的转换得到了不同的结果
- 如何在不轮询的情况下从Ruby REST/CUD API不断更新我的ReactJS客户端