Ruby on rails 4 手动设置request.format后,rails渲染无法正常工作

Ruby on rails 4 手动设置request.format后,rails渲染无法正常工作,ruby-on-rails-4,Ruby On Rails 4,我使用的是rails 4。我试图用ajax创建一个动态表单标签 因此,每次单击Addsymbol时,它都会触发testpage.js.erb,并通过ajax渲染添加一个新的输入字段 然而,当单击发送输入时,它会触发testpage.html.erb,从而触发查询并返回将显示在屏幕上的结果 testpage.html.erb <div id="ajaxsearchform"> <%=render 'searchform'%> </div> ....code

我使用的是rails 4。我试图用ajax创建一个动态表单标签

因此,每次单击Addsymbol时,它都会触发testpage.js.erb,并通过ajax渲染添加一个新的输入字段

然而,当单击发送输入时,它会触发testpage.html.erb,从而触发查询并返回将显示在屏幕上的结果

testpage.html.erb

<div id="ajaxsearchform">
<%=render 'searchform'%>
</div>
   ....code that will show @res on the browser, not important to this topic....
现在addsymbol可以完美地工作,它可以在不刷新整个页面的情况下添加新的输入字段

但是,当我单击Send input时,它会显示以下内容

  Rendered stinfos/_searchform.html.erb (1.5ms)
  Stinfo Load (0.2ms)  SELECT `stinfos`.* FROM `stinfos`  WHERE (symbol='SVA' OR symbol='' OR         symbol='')
  Testdatum Load (0.1ms)  SELECT symbol,stdate,x52wk_high,x52wk_low FROM `testdata`  WHERE 

  (symbol='SVA' OR symbol='' OR symbol='')
  Rendered stinfos/_testshowall.html.erb (1.7ms)
  Rendered stinfos/testpage.html.erb within layouts/application (10.6ms)
  Rendered layouts/_footer.html.erb (0.1ms)
  Completed 200 OK in 1109ms (Views: 1094.7ms | ActiveRecord: 5.4ms)
您可以看到,由于请求,成功呈现了stinfos/testpage.html.erb。format=:html,但浏览器不显示存储在@res中的查询结果

显示查询结果的唯一方法是删除表单_tag-while keep中的remote:true选项

其他代码完全相同。在本例中,控制台显示

Rendered stinfos/_searchform.html.erb (1.7ms)
Stinfo Load (0.2ms)  SELECT `stinfos`.* FROM `stinfos`  WHERE (symbol='SVA' OR symbol='' OR symbol='')
Testdatum Load (0.1ms)  SELECT symbol,stdate,x52wk_high,x52wk_low FROM `testdata`  WHERE (symbol='SVA' OR symbol='' OR symbol='')
Rendered stinfos/_testshowall.html.erb (1.9ms)
Rendered stinfos/testpage.html.erb within layouts/application (11.7ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 1230ms (Views: 1121.6ms | ActiveRecord: 98.8ms)


Started GET "/assets/estimatechanges.css?body=1" for 66.216.227.139 at 2014-11-07 14:10:16 -0600


Started GET "/assets/custom.css?body=1" for 66.216.227.139 at 2014-11-07 14:10:16 -0600

.....
但是,这不会使用ajax功能,因此当单击addsymbol时,屏幕将刷新

请注意,当启用remote:true时,启动的GET。。。没有显示行

为什么启用“远程:true”时渲染行为不同


这是因为除了request.format=:html之外,我遗漏了任何重要的代码?

我已经找到了部分原因,当启用remote:true时,submit\u标记将发送一个只接受text/javascript的请求。即使我动态设置request.format=:html并将respond\u发送到render format.html,页面也不会更改,因为它只接受text/javascript。但是,当form\u标记中启用remote:true时,如何更改请求头以接受html?
  if(!params[:addsymbol].nil?)
          @numofsymbol+=1
  end

  if(!params[:getresult].nil?)
          request.format = :html
  end  

  ...code that will do the query and store result in instance variable @res...

  respond_to do |format|
                    format.js {render layout:'application';}
                    format.html {render layout:'application';}
            end
  Rendered stinfos/_searchform.html.erb (1.5ms)
  Stinfo Load (0.2ms)  SELECT `stinfos`.* FROM `stinfos`  WHERE (symbol='SVA' OR symbol='' OR         symbol='')
  Testdatum Load (0.1ms)  SELECT symbol,stdate,x52wk_high,x52wk_low FROM `testdata`  WHERE 

  (symbol='SVA' OR symbol='' OR symbol='')
  Rendered stinfos/_testshowall.html.erb (1.7ms)
  Rendered stinfos/testpage.html.erb within layouts/application (10.6ms)
  Rendered layouts/_footer.html.erb (0.1ms)
  Completed 200 OK in 1109ms (Views: 1094.7ms | ActiveRecord: 5.4ms)
Rendered stinfos/_searchform.html.erb (1.7ms)
Stinfo Load (0.2ms)  SELECT `stinfos`.* FROM `stinfos`  WHERE (symbol='SVA' OR symbol='' OR symbol='')
Testdatum Load (0.1ms)  SELECT symbol,stdate,x52wk_high,x52wk_low FROM `testdata`  WHERE (symbol='SVA' OR symbol='' OR symbol='')
Rendered stinfos/_testshowall.html.erb (1.9ms)
Rendered stinfos/testpage.html.erb within layouts/application (11.7ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 1230ms (Views: 1121.6ms | ActiveRecord: 98.8ms)


Started GET "/assets/estimatechanges.css?body=1" for 66.216.227.139 at 2014-11-07 14:10:16 -0600


Started GET "/assets/custom.css?body=1" for 66.216.227.139 at 2014-11-07 14:10:16 -0600

.....