2014-01-14 2 views
1

любая идея, почему этот цикл не работает?Ruby 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(:first или find(:last он показывает (но повторять значение), когда оно: все это выдает эту ошибку:

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

Благодаря! им Newb Рубин: D

+0

Что вы пытаетесь сделать? '@ books',' @ book' и '@ bookedit' все равно – 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 %> 

Привет Джонни, вопрос с переменные экземпляра, которые у нас есть в контроллере ->

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

Из того, что я понимаю, пользователь has_many книги.

В этом случае @book на самом деле не один экземпляр книги, но это то же самое, что и @books. Аналогичным образом, @bookedit получает все книги с идентификатором, но не передает идентификатор пользователя.

Из-за связи между пользователями и книги, вы можете получить все книги, пользователь имеет по

@books = @user.books 

На ваш взгляд, если мы делаем

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

Мы перебирать все книги , и запустите форму для этой книги

+0

<% = form_for (book) do | f | %> полностью работает благодаря большому количеству! –

Смежные вопросы