我有一个具有index
和new
操作的UsersController。我使用haml,索引haml文件包含以下代码:
= link_to 'Add User', new_user_path, { :remote => true, 'data-toggle' => 'modal',
'data-target' => '#modal-window', 'class' => 'btn btn-primary pull-right' }
因此,当用户点击“添加用户”时,_new.html.haml
部分将作为模式呈现给用户。它很棒。这是控制器中的新动作:
def new
@user = User.new
respond_to do |format|
format.html
format.js
end
end
现在在我的控制器规范中,我正在尝试执行以下操作:
describe "new action" do
before do
get 'new'
end
# specs for 'new' action go here
end
然而,这会产生错误
Failure/Error: get 'new'
ActionView::MissingTemplate:
Missing template users/new, application/new with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}. Searched in:
* "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x007faa44b03218>"
大概是因为找不到new.html.haml
当然不存在,因为该文件是名为_new.html.haml
的部分。 get
部分的正确语法是什么?如果没有,我该如何测试new
操作?
答案 0 :(得分:1)
好的,这是我在新动作中改变的原因:
respond_to do |format|
format.html { render :partial => 'new' }
format.js
end
当应用程序运行时,rails会计算出部分内容,但我想它需要明确表示rspec。如果有更好的方法,我会很高兴听到它们。