2014-01-14 134 views
1

任何想法爲什麼這個循環不工作?紅寶石Rails form_for每個循環

<% @books.each do |book| %> 
    <%= form_for(@bookedit) do |f| %> 
     <div class="field"> 
     <%= f.label :count, 'how many?' %><br /> 
     <%= f.number_field :count %> 
     </div> 
    <% end %> 
<% end %> 

用戶控制器上:

@books = Book.where(user_id: current_user.id) 
@book = Book.where(user_id: current_user.id) 
@bookedit = Book.find(:all, :conditions => {:id => @book}) 

@user = User.find(params[:id]) 

但是當我使用find(:firstfind(:last它示出了(但重複的值)時,它是:它引發此錯誤:

NoMethodError in Users#account 
undefined method `book_book_path' for #<#<Class:0x6ec5650>:0x6ec3448> 

謝謝! IM福利局紅寶石:d

+0

你想做什麼? '@ books','@ book'和'@deititit'都是一樣的 – AbM

+0

我同意,你想做什麼? –

回答

3

您的用戶應該是這樣的 - >

@user = User.find(params[:id]) 
#or @user = current_user 
@books = @user.books 

你的觀點應該是這樣的 - >

<% @books.each do |book| %> 
    <%= form_for(book) do |f| %> 
     <div class="field"> 
     <%= f.label :count, 'how many?' %><br /> 
     <%= f.number_field :count %> 
     </div> 
    <% end %> 
<% end %> 

喜橫空出世,這個問題是與實例變量我們在控制器 - >

​​

據我瞭解,用戶的has_many書籍。

在這種情況下,@book實際上並不是一本書的一個實例,但它與@books一樣。同樣,@bookedit正在獲取帶有Id的所有圖書,但它沒有傳遞用戶的ID。

由於用戶和書籍之間的關聯,你可以通過

@books = @user.books 

得到所有的書,我的用戶有在你看來,如果我們這樣做

<% @books.each do |book| %> 
    <%= form_for(book) do |f| %> 

我們遍歷所有的書,並運行該書的表格

+0

<%= form_for(book)do | f | %>完全工作非常感謝! –