2

アクションを持つ UsersController がindexありnewます。私は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パーシャルを ting するための正しい構文は何ですか? そうでない場合、どうすればnewアクションをテストできますか?

4

1 に答える 1

1

さて、これを機能させるために新しいアクションで変更したことは次のとおりです。

respond_to do |format|
  format.html { render :partial => 'new' }
  format.js
end

アプリが実行されているとき、Rails はパーシャルをレンダリングする方法を見つけますが、rspec に対して明示的である必要があると思います。それを行うためのより良い方法があれば、私はそれらを聞いてうれしいです.

于 2013-09-28T17:23:37.100 に答える