Rails 4 アプリには、 と の 2 つのモデルがusers
ありaccommodations
ます。Users
多くあり、関連するモデル (つまり、、など)accommodations
に設定されています。宿泊施設モデルに追加されたデータを検証し、エラーがあれば表示しようとしています。belongs_to
has_many
アクションにアクセスしようとするとaccommodations/new
、次のエラーが発生します。
NoMethodError in Accommodations#new
undefined method `errors' for nil:NilClass
ユーザーが登録しようとすると、これが機能します。コードは次のとおりです。
users/new.html.erb:
<% if @user.errors.any? %>
<% @user.errors.full_messages.each do |msg| %>
<p class="error"><%= msg %></p>
<% end %>
<% end %>
しかし、宿泊施設で同じことをしようとすると、次のエラーが表示されます。
accommodations/new.html.erb:
<% if @accommodation.errors.any? %>
<% @accommodation.errors.full_messages.each do |msg| %>
<p class="error"><%= msg %></p>
<% end %>
<% end %>
周りを読んだ後、最初のものはこれが原因で機能することに気付きましたUsersController:
def new
@user = User.new
end
しかし、私の宿泊施設コントローラー #new アクションで次のことを試した後も、まだ機能しません
@accommodation = Accommodation.new
私のAccommodation
モデルは次のとおりです。
class Accommodation < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
end