Railtutorial от Hartl: Преобразование частичного сообщения об ошибках во все объекты имеет неопределенный метод 'f' error - PullRequest
0 голосов
/ 11 марта 2012

Следуя инструкциям Хартла, я частично изменил свои сообщения об ошибках для работы с другими объектами http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec:edit_form.

После изменения всех моих @user на object и передачи: object => f.object при рендеринге партиала, я получаю эту ошибку при попытке загрузить страницу регистрации:

NameError in Users#new: undefined local variable or method 'f'

и он указывает на эту строку

<%= render 'shared/error_messages', :object => f.object %>

Любой совет?

new.html.erb

<div id="mainlogo"><%= image_tag("sample_logo.png", :alt => "Sample Title", 
                                                    :class =>"round")%></div>

    <div id="errors_new">
    <%= render 'shared/error_messages', :object => f.object %>
    </div>

    <div id="signup_spacer"></div>

<div id="signupcontainer_new" class="round">
<h1>Sign Up</h1>
<p>It's free</p>

<div id="signupform_new">
    <%= render :partial => 'users/usersignup' %>
</div>

</div>

_error_messages.html.erb

<% if object.errors.any? %>
  <div id="error_explanation" class="round">


  <% object.errors.full_messages.each do |msg| %>
  <h2><%= msg %></h2>
     <% end %>


  </div>
<% end %>

_usersignup.html.erb

<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :username %><br />
    <%= f.text_field :name %>
  </div>
...
<% end %>

1 Ответ

1 голос
/ 11 марта 2012

f.object допустимо только внутри блока, который определяет f, который теперь находится в частичной форме.

Строка должна находиться в блоке form_for в частичной форме, как в учебник .

Учебник также создает партиал только для полей, куда может идти эта строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...