RubyonRails jquery以js的形式提交表单

RubyonRails jquery以js的形式提交表单,jquery,ruby-on-rails,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby On Rails 3,我认为有以下代码: <%= form_for :folder_name, :remote => true, :method => "get", :url => {:action => "show_workflow_list"} do |f| %> <%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => ("th

我认为有以下代码:

<%= form_for :folder_name, :remote => true, :method => "get", :url => {:action 
    => "show_workflow_list"} do |f| %>
  <%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => ("this.form.submit()")}%><br /><br />
  <%= hidden_field_tag 'selected_domain', params[:domain_selected] %>
当我添加提交按钮而不是
:onchange=>
时,如下所示:

<%= form_for :folder_name, :remote => true, :method => "get", :url => {:action => "show_workflow_list"} do |f| %>
  <%= f.select :foldernames, options_for_select(@folders, @folders.first)%><br /><br />
  <%= hidden_field_tag 'selected_domain', params[:domain_selected] %>
  <pre><%= f.submit "Submit"%></pre>
我的
show\u workflow\u列表中有以下代码
操作:

$('#workflow_selection').html("<%=j render "show_workflow_list" %>");
我有一个
show\u workflow\u list.js.erb
文件,其中包含以下内容:

 Processing by DeploymentGroupController#show_workflow_list as HTML
当有提交按钮时,与JS不同:

def show_workflow_list
  //code here
  respond_to do |format|
    format.html{?}
  end
end
因此,我返回了一个406状态错误,
show\u workflow\u list
未被渲染


更新:

我理解了为什么
onchange=>
被作为HTML发送。原因是select的格式是“
select(对象、方法、选项、选项={},html_选项={})
”。我要提到的地方是:onchange=>this.for.submit“位于html_options={}”下,这就是为什么它被作为html提交的原因。 我需要在同一页面上的
之间呈现部分
\u show\u workflow\u list.html.erb
,因此我在控制器中更改了如下代码:

def show_workflow_list
  //some code
  respond_to do |format|
    format.js
  end
end
<%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => remote_function(:method => :get, :url => {:action => 'show_workflow_list'}, :with => 'Form.Element.serialize(this)')}%><br /><br />
在上面的代码中,我需要在
{}
format.html中填充一些内容,这样它将在我的
make\u deployment\u group.html.erb
中的
div
标记之间呈现部分
\u show\u workflow\u list
,试试这个

$('#foldernames').change(function() {
  $('#folder_name').submit()
});
remote_函数(:method=>:get,:url=>{:action=>'show_workflow_list'},:with=>'Form.Element.serialize(this)}%>

在JS文件上,您应该执行以下操作:

def show_workflow_list
  //code here
  render :format => :js
end
在控制器中,您应该具有以下功能:


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

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

看看这篇文章……它对我有用

remote\u函数在rails>3.0中被弃用,iam使用rails 3.2.6的链接说它被弃用。更重要的是,我需要在调用函数之前提交所选的值作为参数,如果编写代码,我认为它将尝试在操作中执行代码,而不发送任何参数,因为我没有提交form anywhere
with
它正在发送所有表单参数值。您可以找到我现在理解的弃用解决方案,为什么该代码不起作用。对于上述rails代码,它是这样的->“”和“”。现在请让我知道我是否应该在jqeury代码中写入什么id,好的。您必须添加
:html=>{:id=>”在方法和更改
$('#foldernames')
的表单中显示工作流列表“}
,通过js文件中的
$('#foldernames')
进行更改。我为此添加了一个新问题。请注意,当我在application.js甚至在deployment.js.js中添加代码时,我无法看到代码的任何更改
<%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => remote_function(:method => :get, :url => {:action => 'show_workflow_list'}, :with => 'Form.Element.serialize(this)')}%><br /><br />
$('#foldernames').change(function() {
  $('#folder_name').submit()
});
def show_workflow_list
  //code here
  render :format => :js
end