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