Ruby on rails 期望$end的Haml表单?
嗨,我对Rails真的很陌生,当然还有Haml,我已经花了几天的时间想弄明白这一点 使用此部分渲染页面时,出现错误:Ruby on rails 期望$end的Haml表单?,ruby-on-rails,haml,Ruby On Rails,Haml,嗨,我对Rails真的很陌生,当然还有Haml,我已经花了几天的时间想弄明白这一点 使用此部分渲染页面时,出现错误: app/views/todos/\u form.html.haml:19:语法错误,意外关键字\u end,应为$end (请原谅我的缩进错误,我没有复制和粘贴的选项) _form.html.haml内容: 1 = form_tag :todo do |f| 2 %br 3 = f.label :done 4 = f.check_b
app/views/todos/\u form.html.haml:19:语法错误,意外关键字\u end,应为$end
(请原谅我的缩进错误,我没有复制和粘贴的选项)
_form.html.haml内容:
1 = form_tag :todo do |f|
2 %br
3 = f.label :done
4 = f.check_box :done
5 = f.label :title
6 = f.text_field :title
7 %br
8 = f.label :urgent
9 = f.check_box :urgent
10 %br
11 = f.label :important
12 = f.check_box :important
13 %br
14 = f.label :description
15 %br
16 = f.text_area :description
17 %br
18 = f.submit "Save"
19
您的缩进和嵌套不一致。我通常用两个空格 尝试: 这很好地转化为雇员再培训:
<%= form_tag :todo do |f| %>
<br>
<%= f.label :done %>
<%= f.check_box :done %>
<%= f.label :title %>
<%= f.text_field :title %>
</br>
<br>
<%= f.label :urgent %>
<%= f.check_box :urgent %>
</br>
<br>
<%= f.label :important %>
<%= f.check_box :important %>
</br>
<br>
<%= f.label :description %>
</br>
<% end %>
您的缩进和嵌套不一致。我通常用两个空格
尝试:
这很好地转化为雇员再培训:
<%= form_tag :todo do |f| %>
<br>
<%= f.label :done %>
<%= f.check_box :done %>
<%= f.label :title %>
<%= f.text_field :title %>
</br>
<br>
<%= f.label :urgent %>
<%= f.check_box :urgent %>
</br>
<br>
<%= f.label :important %>
<%= f.check_box :important %>
</br>
<br>
<%= f.label :description %>
</br>
<% end %>
在HAML中,除非是块,否则不能有任何直接子元素指向=
。因为=
是ruby代码,而不是html模板的一部分
如果您想将子元素传递给=
,则需要像=form_标记do | f |
那样传递给ruby块
因此,是您的复选框导致了此错误
在本例中,我将两个表单帮助程序移动到一行,如下所示:
= form_tag :todo do |f|
%br
= f.label :done, f.check_box(:done)
= f.label :title
= f.text_field :title
%br
= f.label :urgent, f.check_box(:urgent)
%br
= f.label :important, f.check_box(:important)
%br
= f.label :description
= f.text_area :description
%br
= f.submit "Save"
您还可以通过在方法调用的末尾添加do
来告诉标签帮助器接受块:
= form_tag :todo do |f|
%br
= f.label :done do
= f.check_box(:done)
...
或者甚至使用haml元素而不是rails表单帮助器来制作标签:
= form_tag :todo do |f|
%br
%label{:for => 'done'}
= f.check_box :done
...
在HAML中,除非是块,否则不能将任何直接子元素添加到
=
。因为=
是ruby代码,而不是html模板的一部分
如果您想将子元素传递给=
,则需要像=form_标记do | f |
那样传递给ruby块
因此,是您的复选框导致了此错误
在本例中,我将两个表单帮助程序移动到一行,如下所示:
= form_tag :todo do |f|
%br
= f.label :done, f.check_box(:done)
= f.label :title
= f.text_field :title
%br
= f.label :urgent, f.check_box(:urgent)
%br
= f.label :important, f.check_box(:important)
%br
= f.label :description
= f.text_area :description
%br
= f.submit "Save"
您还可以通过在方法调用的末尾添加do
来告诉标签帮助器接受块:
= form_tag :todo do |f|
%br
= f.label :done do
= f.check_box(:done)
...
或者甚至使用haml元素而不是rails表单帮助器来制作标签:
= form_tag :todo do |f|
%br
%label{:for => 'done'}
= f.check_box :done
...
这就是你正在使用的缩进吗?(第1行的@CodeGnome
=form\u tag
复选框行向我突出)是正确的,因为您希望在页面上显示表单及其内容。子表单元素只是传递给ruby表单块,然后第1行将批次呈现到页面中。这就是您使用的缩进吗?(第1行的@CodeGnome=form\u tag
复选框行向我突出)是正确的,因为您希望在页面上显示表单及其内容。子表单元素只是传递到ruby表单块,然后第1行将该批次呈现到页面中。complistic您完成了吗谢谢!如何将这些复选框嵌套在标签中?是否有其他语法?我在Haml参考网站上找不到它。@sgp667,我添加了第二种方法。但是,这两种方法都应该嵌套,因为第一种方法将复选框的html发送到label helper的第二个参数。如果您想使用rails helpers,可以执行“f.label:done do”,因为label方法接受一个block@arieljuod,我不知道label接受了一个block,这很酷,也很有意义。我将更新我的答案。请注意%label{:for=>'done'}语法提供的行为与帮助程序不同,帮助程序将查找字段的属性转换并打印属性名称,如果您需要与帮助程序类似的内容,则需要%label{for::done};完成属性的标签=f、 复选框:完成;,如果没有,标签是无用的,因为它里面只有一个输入,但没有标签文本,我只推荐帮助者,除非有特别的原因不使用它。谢谢!如何将这些复选框嵌套在标签中?是否有其他语法?我在Haml参考网站上找不到它。@sgp667,我添加了第二种方法。但是,这两种方法都应该嵌套,因为第一种方法将复选框的html发送到label helper的第二个参数。如果您想使用rails helpers,可以执行“f.label:done do”,因为label方法接受一个block@arieljuod,我不知道label接受了一个block,这很酷,也很有意义。我将更新我的答案。请注意%label{:for=>'done'}语法提供的行为与帮助程序不同,帮助程序将查找字段的属性转换并打印属性名称,如果您需要与帮助程序类似的内容,则需要%label{for::done};完成属性的标签=f、 复选框:完成;,如果没有,标签是无用的,因为它里面只有一个输入,但没有标签文本,我只推荐助手,除非有特别的理由不使用它