浏览优秀的Rails tutorial by Michael Hartl(第8章),我试图在我的(Haml)视图中使用Rails提供的form_tag
帮助器。 form_tag
传递给块的表单具有值nil
,我猜这不是预期的用途,因为它阻止在表单中生成字段。我不明白我做错了什么。
这里是haml代码:
= form_tag(sessions_path) do |f|
= # f.label :email # undefined method `label' for nil:NilClass
= f.class.name # NilClass
= form_for(:session, url: sessions_path) do |f|
= f.label :email # Email
= f.class.name # ActionView::Helpers::FormBuilder
此处<(> form_tag
)的第一部分生成的HTML:
<form accept-charset="UTF-8" action="/sessions" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="c72gY3kuFKTFxNerFWT5fH1n63cp9U8Wj0+UBTllqPQ=" /></div>
nil
</form>
相反,form_for
具有预期的行为。
我无法在互联网上找到答案:在RailsCast 270 about Authentication(大约3:30),视频显示的代码与我的相似。在Stackoverflow和Google上搜索form_tag
,NilClass
或haml
等关键字时,我找不到相关答案。
有人会对我做错了什么有线索吗?谢谢!
答案 0 :(得分:2)
您可以查看this other SO question,了解form_for
和form_tag
之间的区别。
在您提到的Railscasts剧集中,代码如下所示:
= form_tag(sessions_path) do
= label_tag :email
= text_field_tag :email, params[:email]
与您的代码不相似!