Rails教程3第8章:注册 - 验证不起作用

时间:2012-02-28 21:29:11

标签: ruby-on-rails ruby-on-rails-3

因此,当输入的信息不正确时,我正试图在我的注册页面上显示一个错误框,但由于某种原因,它会出现模板缺失错误。

这是完整的错误消息

Missing template users/create, application/create with {:handlers=>[:erb, :builder], :formats=>[:html], :locale=>[:en, :en]}. Searched in: * "/Users/chris/rails/demo_app/app/views"

看起来它正在尝试在名为create的应用程序中创建一个新文件,但我不确定它为什么会这样做?

这是我的users_controller.rb

def new
 @user = User.new
 @title = "Sign up"
end

def create
 @user = User.new(params[:user])
 if @user.save
  flash[:success] = "Welcome to the Sample App!"
  redirect_to @user
 else
  @title = "Sign up"
  render = 'new'
  end
 end
end

这是我的_error_messages.html.erb

<% if @user.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@user.errors.count, "error") %> 
        prohibited this user from being saved:</h2>
    <p>There were problems with the following fields:</p>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

我不确定要列出的其他文件,所以如果我错过了任何重要内容,请告诉我们!

谢谢:)

克里斯

2 个答案:

答案 0 :(得分:1)

而不是

render = 'new'

尝试使用:

 render :action => 'new'

答案 1 :(得分:1)

渲染是一个函数,而不是一个变量,所以你不想说 render = 'new',你想把字符串'new'传递给渲染函数,所以 render 'new'应该可以正常工作。这是学习Ruby的难点,缺少括号有时会使人们对变量和函数感到困惑。