2012-11-21 150 views
0

我寫的效用發票應用程序和客戶有很多的讀數。讀數屬於客戶。嵌套資源,並享有

在我的routes.rb

resources :customers do 
    resources :readings 
end 

我會愛一個全新的閱讀創立於特定客戶的觀點發生,因此在我的客戶控制器

def show 
    @customer = Customer.find(params[:id]) 
    @reading = Reading.new(:customer => @customer) 
    respond_to do |format| 
     format.html 
    end 
end 

然後在我的客戶展示查看,我添加如下表格以添加新客戶的閱讀內容

<%= simple_form_for @customer,@reading do |f| %> 
    <%= f.input :customer, :value => @reading.customer.name %> 
    <%= f.input :date_of_reading, :as => :date %> 
<% end %> 

但是上訪問本地主機:3000 /客戶/ 1,得到了一個在客戶#無法顯示錯誤的一段代碼我添加用於添加讀數。可能是什麼問題呢?

回答

0

的問題是,形式期望的陣列,但是要傳遞兩個單獨的對象。更改:

<%= simple_form_for @customer, @reading do |f| %> 

到:

<%= simple_form_for [@customer, @reading] do |f| %> 
+0

謝謝,已經奏效。還有一件事,當試圖檢索當前客戶的名字來填充閱讀的表單'<%= f.input:customer,:value => @ reading.customer.name%>'返回的值是一個對象,如#<客戶:0x007fa006b39ec8>我如何檢索名稱本身? – zurik

+0

@zurik,我不知道如何解決。這是因爲你做'f.input:customer'和'customer'是一個對象。這是閱讀的一種形式。我認爲你不應該在這裏編輯客戶的名字。客戶的名字應該通過'/ customers/1/edit'編輯。至少在我看來。我會考慮只顯示客戶的名字。畢竟這是客戶展示行動。 – Mischa

+0

沒問題,我實際上想要在讀取表單的輸入字段中顯示當前客戶的名稱作爲默認值。但是,讓我想出如何做到這一點 – zurik