2010-11-01 284 views
1

我有工作正常使用HTML中的form_tag,但是當我使用AJAX與遠程=>真我收到此錯誤: - 我的終端日誌顯示: -錯誤:Ruby on Rails的3

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 
在我看來

我有: - 它打印使用使用<%@ homepages.each表@homepages做|設爲首頁| %>沒有被更新。

任何人有任何想法,爲什麼我得到這個錯誤。

+0

縮進4個空格以突出顯示代碼 – s84 2010-11-01 02:21:54

回答

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)中,代替我用於呈現@home頁面的代碼,然後將該代碼放置在部分「_homepage」中。現在我可以使用「_homepage」進行html和Ajax調用。

目前我遇到了一個小問題,那就是將「@homepages」中的所有數據渲染的次數與記錄數一樣多。目前我不知道爲什麼,但至少Ajax調用正在工作。