紅寶石我有3種型號:局部視圖on Rails的
- 客戶
- 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>
謝謝,我有一個問題,什麼是最好的,如果它的空?導致我的新錯誤是未定義的方法'模型名稱爲NilClass:類 – Jseb 2012-07-31 14:49:39
正常的做法是在'新'行動'編輯'''行動做'@book = current_user.books.build'做'@book = current_user.books .find(PARAMS [:ID])'。在這兩種情況下,「form_for @ book」都可以正常工作。也許你應該嘗試類似的東西。 – 2012-08-01 08:58:01