我有 3 个模型:
- 顾客
- book_manager
- 书
customer
可以编辑自己的设置,例如个人资料帐户。但是,它会渲染不同的模型,例如book
. 为此,我决定将文件呈现book/form
如下<% render book/form %>
。
当个人资料页面加载时,客户可以在书籍部分中查看任何内容(如果之前没有写过任何内容),或者如果他之前已经写过一些内容,则可以查看一些内容。在客户控制器页面中,我有以下代码来获取信息:
def edit
@book = current_customer.books.order("created_at DESC").limit(1)
end
在books/_form.html.erb
我有以下内容:
<%= form_for(@book) do |f| %>
<% if @book.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:</h2>
<ul>
<% @book.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :description %><br />
<%= f.text_field :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
在book
控制器edit
中,我什么都没有,或者我应该在哪里放置命令@book
以便他们说话?
我有以下错误:
NoMethodError in Customers#edit
Showing /home/jean/rail/map/app/views/books/_form.html.erb where line #1 raised:
undefined method `model_name' for ActiveRecord::Relation:Class
Extracted source (around line #1):
1: <%= form_for(@book) do |f| %>
2: <% if @book.errors.any? %>
3: <div id="error_explanation">
4: <h2><%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:</h2>