所以,我在“app / views / posts”中将此代码部署在名为“_ form.html.erb”的部分中:
<%= form_for @post do |f| %>
<% if @post.errors.any? %>
<h2>Errores:</h2>
<ul>
<% @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %><br />
<br />
<%= f.label :content %><br />
<%= f.text_area :content %>
</p>
我对此代码有两个观点:
“应用/视图/帖/ new.html.erb”
<h1>Nuevo post</h1>
<%= render 'form' %>
<p>
<%= f.submit "Agregar Nuevo Post" %>
</p>
<% end %>
“应用/视图/帖/ edit.html.erb”
<h1>Editar Post</h1>
<%= render 'form' %>
<p>
<%= f.submit "Actualizar Post" %>
</p>
<% end %>
我想要的是在视图中呈现的表单,但是我已向您展示的代码我在服务器中收到此错误输出:
SyntaxError in Posts#new
Showing /home/levick/rubyblog/app/views/posts/new.html.erb where line #10 raised:
/home/levick/rubyblog/app/views/posts/new.html.erb:10: syntax error, unexpected keyword_ensure, expecting $end
Extracted source (around line #10):
7: </p>
8: <% end %>
Trace of template inclusion: app/views/posts/new.html.erb
Rails.root: /home/levick/rubyblog
Application Trace | Framework Trace | Full Trace
Request
Parameters:
None
Show session dump
Show env dump
Response
Headers:
None
与编辑视图相同。
我的问题是:我做错了什么?
谢谢!
答案 0 :(得分:1)
您不能在partial之外使用表单变量。在新页面和编辑页面中,您重复使用f
变量,即使它仅存在于部分内部。
我建议您通过在部分内部移动创建提交按钮来修复错误。不要忘记也将部分内的<%- end %>
移动到部分内部。
答案 1 :(得分:1)
在部分_form.html.erb
<%= form_for @post do |f| %>
<% if @post.errors.any? %>
<h2>Errores:</h2>
<ul>
<% @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %><br />
<br />
<%= f.label :content %><br />
<%= f.text_area :content %>
</p>
<%= f.submit @post.new_record? ? 'Nuevo Post' : 'Actualizar Post' %>
<% end %>
答案 2 :(得分:0)
你错过了&lt;%end%&gt;关闭你的&lt;%= form_for%&gt;块。