在我的 Rails 4 应用程序中,我有两个模型 -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
但是在我的 AccommodationsController #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