HAML:f.object (form_for) 局部传递给局部是零
HAML: f.object (form_for) local passed to partial is nil
正在尝试制作一个通用部分来显示错误消息。将 f.object
传递给它。但是 object
在我的局部中是 nil
。
new.html.haml
= form_for :post, url: posts_path do |f|
= render 'shared/error_messages', object: f.object
%p
=f.label :title
=f.text_field :title
%p
=f.label :body
=f.text_area :body
=f.submit "Create"
shared/_error_messages.html.haml
- if object.errors.any?
#error_explanation
.alert.alert-danger
You made
= pluralize(object.errors.count, "mistake")
Please fix:
%ul
= object.errors.full_messages.each do |msg|
%li= msg
在 ERB 中,这很简单。一切都正确缩进(我希望)但是如果我通过 local_assigns 检查内部部分,我得到 {:object=>nil,:error_messages=>nil}
Rails 4.2.5,HAML 4.0.7
可能您想在 form_for
块内渲染 error_messages
。您在此处发布的方式 - render
没有缩进,因此它没有嵌套在 form_for
中
这与 HAML 没有任何关系。
您没有将对象传递给 form_for
,所以 f.object
实际上是 nil
。
在控制器中使用@post = Post.new
然后
= form_for @post do |f|
好的,解决了。出于某种原因,如果你这样做
= form_for :post, url: posts_path do |f|
这是行不通的。您需要使用 IVAR @post
才能正常工作。
= form_for @post, url: posts_path do |f|
正在尝试制作一个通用部分来显示错误消息。将 f.object
传递给它。但是 object
在我的局部中是 nil
。
new.html.haml
= form_for :post, url: posts_path do |f|
= render 'shared/error_messages', object: f.object
%p
=f.label :title
=f.text_field :title
%p
=f.label :body
=f.text_area :body
=f.submit "Create"
shared/_error_messages.html.haml
- if object.errors.any?
#error_explanation
.alert.alert-danger
You made
= pluralize(object.errors.count, "mistake")
Please fix:
%ul
= object.errors.full_messages.each do |msg|
%li= msg
在 ERB 中,这很简单。一切都正确缩进(我希望)但是如果我通过 local_assigns 检查内部部分,我得到 {:object=>nil,:error_messages=>nil}
Rails 4.2.5,HAML 4.0.7
可能您想在 form_for
块内渲染 error_messages
。您在此处发布的方式 - render
没有缩进,因此它没有嵌套在 form_for
这与 HAML 没有任何关系。
您没有将对象传递给 form_for
,所以 f.object
实际上是 nil
。
在控制器中使用@post = Post.new
然后
= form_for @post do |f|
好的,解决了。出于某种原因,如果你这样做
= form_for :post, url: posts_path do |f|
这是行不通的。您需要使用 IVAR @post
才能正常工作。
= form_for @post, url: posts_path do |f|