「アカウント」モデルの「表示」ページに、「チェックリスト」モデルがあります。アカウントの表示ページ内のチェックリストで、ブール値のそれぞれをオン/オフできるようにしたいと考えています。次のエラーが表示されます。
NoMethodError in Accounts#show
undefined method `model_name' for NilClass:Class
アプリ/モデル/account.rb
class Account < ActiveRecord::Base has_one :checklist end
アプリ/モデル/checklist.rb
class Checklist < ActiveRecord::Base belongs_to :account belongs_to :user validates :account_id, :presence => true validates :user_id, :presence => true end
アプリ/モデル/user.rb
class User < ActiveRecord::Base has_many :checklists end
app/controllers/account_controller.rb
class AccountController < ApplicationController def show @account = Account.find(params[:id]) @checklist = @account.checklist end end
アプリ/ビュー/アカウント/show.html.erb
<% simple_form_for(@checklist) do |checklist| %> <div> <%= checklist.user.email %> <div class="pull-right"> <%= checklist.created_at.strftime("%b. %d %Y") %> </div></br> <ul> <li><%= checklist.contract_signed %></li> <li><%= checklist.contract_details %></li> <li>…</li> </ul> <%= f.submit "Update", class: 'btn' %> </div> <% end %>
app/controllers/checklists_controller.rb
class ChecklistsController < ApplicationController before_filter :authenticate_user! def create @account = Account.find(params[:account_id]) @checklist = @account.checklist.build(params[:checklist]) @checklist.user = current_user respond_to do |format| if @checklist.save format.html { redirect_to(@account, :notice => 'Checklist Saved.') } else format.html { redirect_to(@account, :notice => 'There was an errors') } end end end def destroy @checklist = current_user.checklists.find(params[:id]) @account = Account.find(params[:account_id]) @checklist.destroy respond_to do |format| format.html { redirect_to @account } end end end