【发布时间】:2013-09-05 22:20:44
【问题描述】:
在我的 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
【问题讨论】:
-
发布您的 index.html.erb
-
分享您的住宿控制器索引操作、模型和完整的错误消息。
-
我的住宿索引操作中没有任何内容,因为我不知道该放什么!我已经用我的住宿模型和额外的错误消息行编辑了帖子
-
@tommyd456 你看到我的答案了吗?
-
在 has_one 关联中,该方法被
build_accommodation取代
标签: ruby-on-rails validation ruby-on-rails-4 activemodel