测试中未定义的方法“名称”,而在开发中工作
Undefined method `name' in test, while working in development
我有一个失败的测试,而在开发服务器上它工作正常。测试生成错误:
ActionView::Template::Error: undefined method `name' for nil:NilClass
app/views/members/show.html.erb:15:in `_app_views_members_show_html_erb__387437852342830797_46300380'
test/integration/site_layout_test.rb:18:in `block in <class:SiteLayoutTest>'
错误指的是下面显示视图第三行的.name
。并在集成测试中引用get member_path(@member_admin)
。
我不明白是什么导致了这个错误。 name
是组织模型中的一列,但组织与成员 (1:many) 之间的关系工作正常。是什么原因造成的;为什么 Rails 无法识别 name
作为变量?
在成员控制器中我有:
def show
@member = Member.find(params[:id])
@organization = @member.organization
redirect_to organization_path(@organization) and return unless (@member.activated || (current_member && !current_member.admin))
end
在展示视图中:
<div class="col-md-5">
<p><b>Fullname </b> <%= @member.fullname %></p>
<p><b>Organization </b> <%= link_to @organization.name, organization_path(@organization) %></p>
<p><b>Email</b> <%= @member.email %></p>
<p><b>Phone</b> <%= @member.phone %></p>
</div>
测试:
def setup
@member_admin = orgusers(:one)
end
test "layout links" do
log_in_as("member", @member_admin)
get member_path(@member_admin)
end
很简单,您的 Member
在测试中没有关联 Organization
。确保您的测试夹具提供这些模型之间的正确关系。
我有一个失败的测试,而在开发服务器上它工作正常。测试生成错误:
ActionView::Template::Error: undefined method `name' for nil:NilClass
app/views/members/show.html.erb:15:in `_app_views_members_show_html_erb__387437852342830797_46300380'
test/integration/site_layout_test.rb:18:in `block in <class:SiteLayoutTest>'
错误指的是下面显示视图第三行的.name
。并在集成测试中引用get member_path(@member_admin)
。
我不明白是什么导致了这个错误。 name
是组织模型中的一列,但组织与成员 (1:many) 之间的关系工作正常。是什么原因造成的;为什么 Rails 无法识别 name
作为变量?
在成员控制器中我有:
def show
@member = Member.find(params[:id])
@organization = @member.organization
redirect_to organization_path(@organization) and return unless (@member.activated || (current_member && !current_member.admin))
end
在展示视图中:
<div class="col-md-5">
<p><b>Fullname </b> <%= @member.fullname %></p>
<p><b>Organization </b> <%= link_to @organization.name, organization_path(@organization) %></p>
<p><b>Email</b> <%= @member.email %></p>
<p><b>Phone</b> <%= @member.phone %></p>
</div>
测试:
def setup
@member_admin = orgusers(:one)
end
test "layout links" do
log_in_as("member", @member_admin)
get member_path(@member_admin)
end
很简单,您的 Member
在测试中没有关联 Organization
。确保您的测试夹具提供这些模型之间的正确关系。