我在开发服务器上有一个失败的测试它工作正常。测试会生成错误:
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:很多)之间的关系可以正常工作。是什么导致了这一点;为什么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
答案 0 :(得分:0)
很简单,您的Member
在测试中没有关联的Organization
。确保您的测试夹具在这些模型之间提供正确的关系。