2010-05-03 62 views
-1

我是新來的RoR,任何幫助將不勝感激:)
我有一個基本的腳手架CRUD應用程序添加客戶。
我想按first_name或last_name字段進行搜索。
無法在軌道上獲得簡單的紅寶石搜索上班時間:/

,我得到的錯誤是:

NoMethodError在Clientes#找到 你有一個零對象時,你沒想到吧! 您可能預期了Array的一個實例。

6:  <th>Apellido</th> 
7:  </tr> 
8: 
9: <% for cliente in @clientes %> 
10: <tr> 
11:  <td><%=h cliente.client_name %></td> 
12:  <td><%=h cliente.client_lastname %></td> 

應用程序跟蹤在控制器

C:/Rails/clientes/app/views/clientes/find.html.erb:9:in `_run_erb_app47views47clientes47find46html46erb' 

我的查找功能/ clientes_controlee.rb:在評估nil.each

提取的源(圍繞線#9)發生 錯誤是:

# Find 
def find 
    @cliente = Cliente.find(:all, 
    :conditions=>["client_name = ? OR client_lastname = ?", params[:search_string], params[:search_string]]) 

end 

我的意見/佈局clientes.html.erb形式的代碼片段:

<span style="text-align: right"> 
<% form_tag "/clientes/find" do %> 
<%= text_field_tag :search_string %> 
<%= submit_tag "Search" %> 
<% end %> 
</span> 

我的意見/ clientes/find.html.erb創建的搜索模板:

<h1>Listing clientes for <%= params[:search_string] %></h1> 

<table> 
<tr> 
<th>Nombre</th> 
<th>Apellido</th> 
</tr> 
<% for cliente in @clientes %> 
<tr> 
<td><%=h cliente.client_name %></td> 
<td><%=h cliente.client_lastname %></td> 
<td><%= link_to 'Mostrar', cliente %></td> 
<td><%= link_to 'Editar', edit_cliente_path(cliente) %></td> 
<td><%= link_to 'Eliminar', cliente, :confirm =>'Estas Seguro de que desear eliminar a este te cliente?', :method => :delete %></td> 
</tr> 
<% end %> 
</table> 
<br /> 
<%= link_to 'Atras', clientes_path %> 

開發日誌

處理ClientesController#索引(對於127.0.0.1在2010-05-02 22:14:29)[GET] [4; 36; 1mCliente Load(1.0ms)[0m [0; 1mSELECT * FROM「 clientes」 [佈局/ clientes內0米 渲染模板 渲染clientes /在28ms完成索引 (查看:19,DB:1)| 200 OK [http://localhost/clientes]

處理ClientesController#SRC(在22點14分36秒2010-05-02 127.0.0.1)[POST] 參數:{ 「search_string的」=> 「愛德華calvachi」, 「提交」= >「搜索」,「authenticity_token」 =>「mSaFeUAWdIWBNPkTufX2hdx7NaMaGfLSp1h78nTB7Ns =」}

NoMethodError(你有一個零對象時,你沒想到吧! 你期望的ActiveRecord :: Base的實例。 錯誤發生在評估零[]): app/controllers/clientes_controller.rb:88:in`src'

渲染救援/ _trace(48.0ms ) 渲染救援/ _request_and_response(0.0ms) 渲染救援/佈局(INTERNAL_SERVER_ERROR)

處理ClientesController#SRC(爲127.0.0.1在2010-05-02 22點20分二十八秒)[POST] 參數:{ 「SEARCH_STRING」=> 「愛德華calvachi」, 「提交」=> 「搜索」, 「authenticity_token」=> 「mSaFeUAWdIWBNPkTufX2hdx7NaMaGfLSp1h78nTB7Ns =」}

NoMethodError(你有一個零對象時,你沒想到吧! 您可能已經預期了ActiveRecord :: Base的實例。而評估零發生 錯誤[]): 應用程序/控制器/ clientes_controller.rb:88:在`SRC」

渲染救援/ _trace(92.0ms) 渲染救援/ _request_and_response(1.0ms的) 渲染(內部服務器錯誤)

處理ClientesController#src(對於127.0.0.1在2010-05-02 22:36:12)[POST] 參數:{「search_string」=>「eduardo calvachi」,「commit 「=>」搜索「,」authenticity_token「=>」mSaFeUAWdIWBNPkTufX2hdx7NaMaGfLSp1h78nTB7Ns =「}

NoMethodError(您有nil當你沒有料到它的時候! 您可能已經預期了ActiveRecord :: Base的實例。而評估零發生 錯誤[]): 應用程序/控制器/ clientes_controller.rb:88:在`SRC」

渲染救援/ _trace(39.0ms) 渲染救援/ _request_and_response(0.0ms) 渲染救援/佈局(internal_server_error)

+0

您的routes.rb文件是否有此操作的定義? – Lowgain 2010-05-03 02:11:30

+1

在你的'find'方法中,@cliente應該是@clientes ... – Staelen 2010-05-03 02:41:36

+0

嗨Lowgain,我只有默認路由: ActionController :: Routing :: Routes.draw do | map | map.resources:clientes 和 map.connect ':控制器/:動作/:身份證' 和 map.connect ':控制器/:動作/:ID:格式' – edu222 2010-05-03 03:00:31

回答

0

@clientes顯然是nil元素。

嘗試將您的代碼放入索引,因爲您可能會將其作爲restful資源,或者find是保留名稱。

控制器改變你的定義如下:

def index 
    params = params[:search_string] 
    @clientes = Cliente.find(:all, :conditions=>["client_name = ? OR client_lastname = ?",params, params) 
end 

BTW - 確保,那麼你必須在你的索引視圖舊的查找視圖。

+0

山姆,謝謝你的建議,我用你的索引def取代我的find def,然後我改變了<%form_tag「/ clientes/find」做%>到<%form_tag「/ clientes/index」do%>但我現在我甚至無法運行/ clientes。我得到一個noMethod錯誤C:/Rails/clientes/app/controllers/clientes_controller.rb:88:在'index' 我在這裏錯過了什麼? – edu222 2010-05-03 02:58:01

+0

我也希望能夠在我的應用程序中顯示客戶的常規索引以及需要時的搜索結果。不會改變我的舊索引視圖混亂我的舊客戶端默認索引? – edu222 2010-05-03 02:59:21

+0

如果我嘗試其他的東西,並調用我的def src而不是查找,在views/layout文件中使用<%form_tag「/ clientes/src」do%>並仍然使用你建議的代碼,我得到一個不同的nil對象NoMethodError: C:/軌道/ clientes /應用/控制器/ clientes_controller。RB:88:在'SRC」 請求 參數: { 「search_string的」=> 「愛德華calvachi」, 「提交」=> 「搜索」, 「authenticity_token」=> 「mSaFeUAWdIWBNPkTufX2hdx7NaMaGfLSp1h78nTB7Ns =」} – edu222 2010-05-03 03:22:00