无法确定我的产品表单.html.erb 文件此 rails 错误消息的语法错误原因?



我正在创建一个rails网络商店应用程序,我正在遵循我的编码学院的教程。

对于我的产品控制器,我使用简单的forms gem来创建"编辑product"根据教程,下面的语法应该是正确的:

<%= simple_form_for(@product) do |f| %>
<%= f.error :base %>
<%= f.error_notification message: f.object.errors [:base].to_sentence if f.object.errors [:base].present? %>
<div class="form-inputs">
<%= f.input :title %>
<%= f.input :description %>
<%= f.input :price %>
<%= f.input :category, :collection ["footwear", "accessories", "menswear", "womenswear"] %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>

当我试图在我的_form.html中输入上述内容时,我收到了第3行错误。erb文件:

SyntaxError:/用户/Sneha1/桌面/sbhamra/streetwear_app/app/views/产品/_form.html。动词:3:语法错误,unexpected [, expected ')'…Tion消息:f.t object.errors [:base]。To_sentence if f.objec... ...^

如果有人能看看这个,帮我找出我做错了什么,那就太好了!

看起来ruby在解析带有条件值的散列时遇到了麻烦。它需要一些括号的帮助。

foo = "bar"
hsh = {qux: foo if foo.present?} #=> syntax error, unexpected '}', expecting end-of-input

但是有一些括号的解析指导:

foo = "bar"
hsh = {qux: (foo if foo.present?)} #=> {:qux => "bar"}

所以试着这样写你的第3行:

<%= f.error_notification message: (f.object.errors [:base].to_sentence if f.object.errors [:base].present?) %>

或者更简洁地说::

<%= f.error_notification message: f.object.errors[:base]&.to_sentence %>

相关内容