这是我的控制器名为static_pages: -
class StaticPagesController < ApplicationController #StaticPagesController is a ruby class that inherits from ApplicationController
def home
end
def genre
@genre=Genre.all
@book=Book.find_by(genre_id:1)
end
def accessories
end
def aboutus
end
def contactus
end
end
#home, genre and accessories are actions of the controller
这是我的观点流派genre.html.erb:
<% @genre.each do|genre|%>
<tr>
<td><%=genre.genre_id %></td>
<br>
<td><%=genre.genre_name %></td>
<br>
<td><%=genre.description %></td>
<br>
<br>
</tr>
<% end %>
<% @book.each do|book|%>
<tr>
<td><%=book.book_name %></td>
<br>
<td><%=book.pages %></td>
<br>
<td><%=book.stock %></td>
<br>
<td><%=book.synopsis %></td>
<br>
<td><%=book.mrp%></td>
<br>
<td><%=book.author %></td>
<br>
<td><%=book.publisher %></td>
<br>
<td><%=book.rating %></td>
<br>
<td><%=book.genre_name%></td>
<br>
<td><%=book.discount %></td>
<br>
<br>
</tr>
<% end %>
打开流派视图时,我收到了图书部分的错误。它说未定义的方法`每个&#39;对于#Book:0x007f014ab326d8。 我不确定为什么我会收到此错误,因为我复制了从类型部分粘贴的内容并且没有显示错误,所以为什么会这样?
答案 0 :(得分:1)
def genre
@genre=Genre.all
@books =Book.where(genre_id:1)
end
这里Book.where将作为集合返回
答案 1 :(得分:0)
根据here
中的文档<强> find_by 强> -
find_by方法查找匹配某些条件的第一条记录。例如:
所以基本上它会将查询结果限制为只有1条记录,并且每种方法都可以处理记录集合
SELECT "books".* FROM "books" WHERE "books"."genre_id" = $1 LIMIT 1[["genre_id", 1]]
如果我使用 Book.where(genre_id:1)
触发的查询是SELECT "books".* FROM "books" WHERE "books"."genre_id" = $1 [["genre_id", 1]]