知道为什么这个循环不起作用?
<% @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>
谢谢!我对红宝石的新闻:D
答案 0 :(得分:3)
您的用户应如下所示 - &gt;
@user = User.find(params[:id])
#or @user = current_user
@books = @user.books
您的观点应如下所示 - &gt;
<% @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 %>
嗨约翰尼,问题在于我们在控制器中的实例变量 - &gt;
@books = Book.where(user_id: current_user.id)
@book = Book.where(user_id: current_user.id)
@bookedit = Book.find(:all, :conditions => {:id => @book})
根据我的理解,用户有很多书。
在这种情况下,@book
实际上并不是一本书的一个实例,但它与@books
相同。同样地,@bookedit
正在获取具有Id的所有Books,但它没有传递用户的id。
由于用户和书籍之间的关联,您可以通过
获取我用户拥有的所有书籍@books = @user.books
在您看来,如果我们这样做
<% @books.each do |book| %>
<%= form_for(book) do |f| %>
我们遍历所有书籍,然后为那本书运行一个form_