0

私は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 %>

bookcontrollerには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>
4

2 に答える 2

1
<% render book/form.html.erb %>

する必要があります

<%= render '/books/form' %>
于 2012-07-31T14:45:41.953 に答える
0

コードに少なくとも 1 つの単純なエラーがある

@book = current_user.books.order("created_at DESC").limit(1)

これは確かに最新の本を返しますが、それを配列で返します。

呼び出す代わりにlimit(1)、メソッドを使用する必要がありますfirst

@book = current_user.books.order("created_at DESC").first
于 2012-07-31T14:46:24.203 に答える