ruby on rails jquery提交表格作为js

我在我看来有这个代码:

 true, :method => "get", :url => {:action => "show_workflow_list"} do |f| %>  ("this.form.submit()")}%>

当我更改下拉列表中的值时,表单将被提交为:

 Processing by DeploymentGroupController#show_workflow_list as HTML Parameters: {"utf8"=>"Γ£ô", "folder_name"=>{"foldernames"=>"DETAIL_ADJUSTMENT" 

当我添加一个提交按钮而不是:onchange=>如下所示:

  true, :method => "get", :url => {:action => "show_workflow_list"} do |f| %> 


请求是这样提交的:

 Processing by DeploymentGroupController#show_workflow_list as JS Parameters: {"utf8"=>"Γ£ô", "folder_name"=>{"foldernames"=>"DETAIL_ADJUSTMENT" 

我在show_workflow_list操作中有以下代码:

 def show_workflow_list //some code respond_to do |format| format.js end end 

我有一个show_workflow_list.js.erb文件,其中包含以下内容:

 $('#workflow_selection').html(""); 

问题是当我将其更改为onchange=> submit ,它将处理该操作为HTML:

  Processing by DeploymentGroupController#show_workflow_list as HTML 

当有提交按钮时,而不是JS:

  Processing by DeploymentGroupController#show_workflow_list as JS 

所以我得到了406状态错误,并且没有呈现show_workflow_list


更新:

我理解为什么onchange=>被发送为HTML。 原因是select的格式是“ select(object, method, choices, options = {}, html_options = {}) ”。 我提到的地方":onchange=>this.for.submit" is under html_options={}" ,这就是为什么它以HTML格式提交。我需要在

之间渲染部分_show_workflow_list.html.erb在同一页面上,所以我改变了控制器中的代码,如下所示:

 def show_workflow_list //code here respond_to do |format| format.html{?} end end 

在上面的代码中,我需要在_show_workflow_list填充一些内容,以便它在_show_workflow_listdiv标记之间呈现部分make_deployment_group.html.erb

在JS文件上,您应该这样做:

 $('#foldernames').change(function() { $('#folder_name').submit() }); 

在你的控制器中你应该有这个:

 def show_workflow_list //code here render :format => :js end 

当您更改值时,它应该提交您的表单,以便它应该向您的控制器发送ajax请求。 您的控制器应呈现js格式并执行show_workflow_list.js.erb 。 要检查它,您可以使用像firebug这样的javascript控制台。

这是因为您正在错误地使用jQuery提交调用

检查这篇文章…它为我工作Rails远程表单通过JavaScript提交

试试这个

 <%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => remote_function(:method => :get, :url => {:action => 'show_workflow_list'}, :with => 'Form.Element.serialize(this)')}%>