2

所以,我在“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>

我对这段代码有两个看法:

“app/views/posts/new.html.erb”

<h1>Nuevo post</h1>

    <%= render 'form' %>

<p>
    <%= f.submit "Agregar Nuevo Post" %>
</p>
<% end %>

“app/views/posts/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

与编辑视图相同。

我的问题是:我做错了什么?

谢谢!

4

3 回答 3

1

您不能在部分之外使用表单变量。在您的新页面和编辑页面中,您都可以重用该f变量,即使它只存在于部分内部。

我建议您通过在部分中移动提交按钮的创建来修复错误。不要忘记也移动<%- end %>局部内部,因为您正在完成局部内部的表单。

于 2012-06-13T02:07:04.863 回答
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 %>
于 2012-06-13T02:16:35.147 回答
0

您缺少一个 <% end %> 来关闭您的 <%= form_for %> 块。

于 2012-06-13T02:01:11.623 回答