我的new.html.erb视图中出现语法错误。我的代码是:
<h1>Add new skill</h1>
<%= form_tag :action => 'create' %>
<p><label for="skill_title">Title</label>:
<%= text_field 'skill', 'title' %></p>
<%= collection_select :skill, :id, Skill.all, :id, :name %>
<%= submit_tag "Create" %>
<% end %>
<%= link_to 'Back', {:action => 'list'} %>
我的错误是:
SyntaxError in SkillsController#new
app/views/skills/new.html.erb:10: syntax error, unexpected keyword_ensure, expecting end-of-input
它指向我代码的最后一行。我错过了一个结局吗?我试过了,但没用。感谢任何能够发现我的错误的人,希望这是一个简单的错误。
app/views/skills/new.html.erb:2: syntax error, unexpected =>, expecting ')' ...r.append= form_tag (:action => 'create') do @output_buffer... ... ^ C:/HandCoOp/project/HandCoOp/app/views/skills/new.html.erb:2: syntax error, unexpected ')', expecting keyword_end ... form_tag (:action => 'create') do @output_buffer.safe_appe... ... ^ C:/HandCoOp/project/HandCoOp/app/views/skills/new.html.erb:10: syntax error, unexpected keyword_ensure, expecting end-of-input
答案 0 :(得分:2)
如果你看错了,就说:
SyntaxError in SkillsController#new
app/views/skills/new.html.erb:10: syntax error, unexpected keyword_ensure, expecting end-of-input
当您尝试关闭未打开的循环时会出现此类错误。
修复:
<h1>Add new skill</h1>
<%= form_tag :action => 'create' %>
<p><label for="skill_title">Title</label>:
<%= text_field 'skill', 'title' %></p>
<%= collection_select :skill, :id, Skill.all, :id, :name %>
<%= submit_tag "Create" %>
<% end %> # this is the culprit of your error
<%= link_to 'Back', {:action => 'list'} %>
但是看看你的代码它是一个表格,所以你的结局应该在那里,但你忘了打开你的循环:
<h1>Add new skill</h1>
<%= form_tag({action: "create"}) do %> #forgot this do to open your loop
<p><label for="skill_title">Title</label>:
<%= text_field 'skill', 'title' %></p>
<%= collection_select :skill, :id, Skill.all, :id, :name %>
<%= submit_tag "Create" %>
<% end %> # this is the culprit of your error
<%= link_to 'Back', {:action => 'list'} %>
答案 1 :(得分:2)
为了清楚起见,@user2675613
指出了以下内容:
<%= form_tag ({action: "create"}) do %>
<%= ... %>
<% end %>
根据Rails docs,您必须在do
声明的末尾使用form_tag
,才能让Ruby block
工作用。
如果这不起作用,我会看看你如何在form_tag
声明中定义你的路线。您目前只使用action
;我会使用path helper
来正确定义路线
-
错误强>
您遇到的问题如下:
意外的keyword_ensure,期待输入结束
这基本上意味着您没有在某个块上调用end
,或者创建了code block
而没有正确定义各种参数。使用do
基本上定义了Ruby,您将使用块,因此将查找end
标记;这应该是您需要的修复
<强>更新强>
在提及您的新错误时,它似乎要求您在某处包含)
。看more Rails docs,我会说这是你必须要做的事情:
<%= form_tag ({action: "create"}) do %>
EG
<%= form_tag({:action => 'create'}, {:id => 'anID'}) %>