因此,当输入的信息不正确时,我正试图在我的注册页面上显示一个错误框,但由于某种原因,它会出现模板缺失错误。
这是完整的错误消息
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 %>
我不确定要列出的其他文件,所以如果我错过了任何重要内容,请告诉我们!
谢谢:)
克里斯
答案 0 :(得分:1)
而不是
render = 'new'
尝试使用:
render :action => 'new'
答案 1 :(得分:1)
渲染是一个函数,而不是一个变量,所以你不想说 render = 'new'
,你想把字符串'new'传递给渲染函数,所以 render 'new'
应该可以正常工作。这是学习Ruby的难点,缺少括号有时会使人们对变量和函数感到困惑。