私は3つのモデルを持っています:
- お客様
- ブックマネージャー
- 本
は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
controllerには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>