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_list
的div
标记之间呈现部分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)')}%>
Interesting Posts