我有一个使用html工作正常的form_tag,但是当我使用ajax和remote =>我收到此错误: - 我的终端日志显示: -
Started GET "/" for 127.0.0.1 at 2010-11-01 01:19:49 +0000
Processing by HomepagesController#index as HTML
Homepage Load (0.6ms) SELECT "homepages".* FROM "homepages"
Rendered homepages/index.html.erb within layouts/application (23.0ms)
Completed 200 OK in 40ms (Views: 27.3ms | ActiveRecord: 0.6ms)
Error during failsafe response: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)
* 然后加载了cleaner.rb的东西 则: -
Started GET "/homepages?utf8=%E2%9C%93&search=hom" for 127.0.0.1 at 2010-11-01 01:19:56 +0000
Processing by HomepagesController#index as JS
Parameters: {"utf8"=>"✓", "search"=>"hom"}
Homepage Load (0.5ms) SELECT "homepages".* FROM "homepages" WHERE (section LIKE '%hom%')
Rendered homepages/index.js.erb (2.9ms)
Completed in 19ms
在我的index.js.erb中,我有: -
$("testsearch").update("<%= escape_javascript(render(@homepages))%>");
在我的控制器中我有: -
def index
@homepages = Homepage.search(params[:search])
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @homepages }
format.js { render :layout => false }
end
在我看来,我有: - 使用&lt;%@ homepages.each do | homepage |使用表打印@homepages %GT;没有更新。
任何人都有任何关于我为何会收到此错误的想法。
答案 0 :(得分:1)
我已经通过进入IRC聊天室(irc.freenode.net RubyonRails)和ProjectZen(人类在以太某处的某个地方)帮助我实现它来破解它。
显然正在发生的事情是我跟随Ryan Bates做了许多非常好的Railcast视频,但他建立在之前的Railcast上。因此,在他处理Ajax调用的205 Railscast中,他没有提到你必须拥有: -
format.js
在控制器中的操作中。
他的xxxx.searchxxxxx
需要在控制器或模型中创建。
当我这样做时: -
<%= render(@homepages)%> <!-- (in his case <%= render(@products)%>) -->
渲染器正在寻找一个名为“_homepage”的部分(不是“主页”)(我甚至没有部分因此我得到了UTF8到ASCII错误)。
然后在“_homepage”中我会添加我的代码来渲染结果。
我现在在index.html.erb
中做的是将<%= render(@homepages)%>
放在(div id = testsearch)代替我用来渲染@homepages的代码,然后将代码放入部分“_homepage”。现在我可以使用“_homepage”来进行html和Ajax调用。
目前我遇到一个小问题,即它将“@homepages”中的所有数据渲染为记录数量的多倍。目前我不知道为什么,但至少Ajax调用正在发挥作用。