0

私の users_controller.rb には次のものがあります。

  def create 
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        redirect_to @user, success: 'User was successfully created.' 
      else
        flash.now[:error] = "There are some user signup errors"
        format.html {render action: "new"} 
      end 
    end 
  end 

views/user/_form.html.erb には次のものがあります。

<% if !flash[:error].empty? %>
  <div class="alert alert-error">
    <p>There are some errors </p>
  </div>
  <% end %>

テストの実行中に次のメッセージが表示されます: undefined method `empty?' nil:NilClass の場合 、このビューはこの変数を見ることができないと思います。そこに渡す方法がわかりません。

4

2 に答える 2

1

あなたは書くべきです:

<% if flash[:error].present? %>
于 2012-09-13T14:00:18.843 に答える
1

このようなコードでパーシャルのローカル変数を定義する必要があります

 # views/user/new.html.erb
 = render "form", user: @user, flash: flash

そしてもう一つアドバイス。砂糖を使う

# views/user/_form.html.erb
<% unless flash[:error].empty? %>
   <% flash.each do |key, msg| %>
      <div class="alert alert-<%= key %>">
         <p><%= msg %></p>
     </div>
  <% end %>
<% end %>
于 2012-09-13T14:00:21.697 に答える