故障安全响应期间出错:Ruby on Rails 3

时间:2010-11-01 01:51:31

标签: ruby-on-rails

我有一个使用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;没有更新。

任何人都有任何关于我为何会收到此错误的想法。

1 个答案:

答案 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调用正在发挥作用。