【发布时间】:2014-02-17 07:36:43
【问题描述】:
我在 RoR 教程中做练习,遇到了一个奇怪的问题,错误消息出现了两次。
new.html.slim
- provide(:title,'Sign up')
h1 Sign up
div class="row"
div class="col-sm-6 col-sm-offset-3"
= form_for(@user,html:{role:"form"}) do |f|
= render 'shared/error_messages'
div class="form-group"
= f.label :name
= f.text_field :name, class:"form-control"
div class="form-group"
= f.label :email
= f.text_field :email, class:"form-control"
div class="form-group"
= f.label :password
= f.password_field :password, class:"form-control"
div class="form-group"
= f.label :password_confirmation,"Confirmation"
= f.password_field :password_confirmation, class:"form-control"
= f.submit "Create Account", class: "btn btn-lg btn-primary"
在这段代码(第 7 行)中,我正在渲染部分 shared/error_messages。该页面的调用方式如下:
users_controller.rb
def create
@user = User.new(user_params)
if @user.save
else
render 'new'
end
end
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
有什么想法吗?
编辑:添加部分
= if @user.errors.any?
div#error_explanation
div class="alert alert-danger"
| The form has
= "#{@user.errors.count}"
| error(s)
ul
- @user.errors.full_messages.each do |msg|
li
= "#{msg}"
【问题讨论】:
-
这是一个实际的双重渲染错误,还是您只是在页面上显示了两次?
-
我在页面上显示了两次这个“shared/error_messages”位,当我用谷歌搜索这个问题时,我认为问题是因为我在 users_controller.rb 中调用了“新”而引起的。
-
你能把这部分的内容贴上来吗?
-
= if @user.errors.any?只需将 '=' 更改为 '-' -
我不熟悉这种“苗条”的语法,但似乎
=用于输出值,而-用于控制正在执行的内容(与if、each语句等一起使用)。类似于.html.erb文件中的<%=和<%。
标签: ruby-on-rails ruby slim-lang