在我的“帐户”模型的“显示”页面上,我有一个“清单”模型。我希望能够在帐户的显示页面中检查清单上的每个布尔值。我收到以下错误:
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
应用程序/控制器/account_controller.rb
class AccountController < ApplicationController def show @account = Account.find(params[:id]) @checklist = @account.checklist end end
app/views/account/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 %>
应用程序/控制器/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