ちょっと、私は別の問題を抱えています;)
アプリで新しい本を作成しようとすると、常に次のように表示されます
undefined method "model_name" for NilClass:Class
Form_for 関数で初期化されていないパラメーターでなければならないことがわかりました...ここに私のコード:
NoMethodError in Books#new
Showing /app/views/books/_form.html.erb where line #1 raised:
undefined method `model_name' for NilClass: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>
コントローラ:
#GET /books/new
#GET /books/new.json
def new
@users = User.find(:all)
@book = Book.new
1.times{ @book.chapters.build }
@book.users = [current_user]
respond_to do |format|
format.html #new.html.erb
format.json { render json: @book }
end
end
ブックとユーザーの間の関係を変更する前は正常に機能していましたが、失敗するべきではありませんか?
編集:
app/views/books/new.html.erb :
<h1>New book</h1>
<%= render 'form' %>
<%= link_to 'Back', books_path %>
そしてモデル:
class Book < ActiveRecord::Base
attr_accessible :abstract, :status, :titel, :user_tokens, user_ids, :chapters_attributes
has_and_belongs_to_many :users
attr_reader :user_tokens
has_many :chapters, :dependent => :destroy, :autosave => true, :order => 'slot'
validates :title, :presence => true
accepts_nested_attributes_for :chapters, :allow_destroy => true
after_initialize :init
def init
self.status = false if self.status?
end
def user_tokens=(ids)
self.user_ids = ids.split(",")
end
end
end