我有一个控制器,在用户填写表单后,将新模型实例发布到数据库中。此表单使用each do
创建,该inventory
循环应用程序控制器中定义的一系列 <%= form_for @requestrecord, :html=> {:id => 'form'} do |f| %>
<div class="col-xs-12">
<p><b>Items we have available</b></p>
</div>
<% @inventory.each do |category, list| %>
<div class="col-xs-2">
<div class="form-group box">
<h5> <%="#{category}"%> </h5>
<% list.each do |thing| %>
<%= f.check_box(:items, {:multiple => true}, "#{thing}") %>
<%= f.label(:items, "#{thing}") %>
</br>
<% end %>
</div>
</div>
<% end %>
项。
换句话说,这是视图代码:
def inventory
@inventory = { some hash }
end
应用程序控制器中有一个定义库存的方法:
def create
inventory
@requestrecord = Request.new(request_params)
end
然后在我试图测试的请求控制器中调用此方法:
inventory
问题出在我的Rspec控制器测试中,我现在必须再次手动定义这个before do
@inventory = { some hash }
end
:
before
有没有办法在@inventory
语句中从Application Controller调用该方法? {{1}}是一个相当长的哈希...
谢谢!
答案 0 :(得分:0)
您可以使用'controller'访问rspec中的控制器,所以
before do
@inventory = controller.inventory
end
应该做的工作!