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 %>

运行测试时,我得到:未定义的方法“空?” 对于 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 回答