2012-06-13 2 views
2

Итак, у меня есть этот код в частичном называется «_form.html.erb» в «приложение/просмотров/сообщений»:Rails partials: Что я делаю неправильно?

<%= 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 

То же самое с редактировать вид.

Мой вопрос: Что я сделал не так?

Спасибо!

ответ

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 %> 
+0

Не работает ... – Zauu

+0

Какая ошибка вы получаете? –

+0

Посмотрите: http://min.us/mHje7Wu5B – Zauu

0

Вам не хватает <% end%>, чтобы закрыть блок <% = form_for%>.

1

Вы не можете использовать переменную формы вне частичного. На ваших новых страницах и страницах редактирования вы повторно используете переменную f, хотя она существует только внутри частичного.

Я бы рекомендовал вам исправить ошибку, перемещая создание кнопок отправки внутри частичного. Не забудьте также переместить <%- end %> внутри частичного, так как вы заканчиваете форму внутри частичного.

+0

Но на мой взгляд редактирования Кнопка говорит что-то другое ... Как я могу держать это поведение? – Zauu

+0

Вы можете передать переменную в частичную. См. Http://stackoverflow.com/a/3222958/136584. В основном вы устанавливаете хеш: locals. – Jason

+0

Не могли бы вы дать мне практический пример именно для моего случая? Я попробовал примеры в вопросе, на который вы ссылаетесь, и не работал ... – Zauu