направляет объект к частичным, а затем к другому частичному - PullRequest
0 голосов
/ 01 апреля 2012

Мне было интересно, как передать объект в частичное, а затем снова в другое частичное? Я слежу за книгой Майкла Хартла, и это было необязательное упражнение, но я очень застрял.

если у меня есть ..

<%= form_for(@user) do |f| %>
    <%= render 'fields', object: f.object %>

<% end %>

из книги сказано, что используется хеш со значением, равным объекту, и ключом, равным имени переменной, которую мы хотим получить в частичном. это означает, что в _fields.html.erb ключ 'объект' должен существовать и иметь значение f.object

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

<%= object.label :name %>
<%= object.text_field :name %>

<%= object.label :email %>
<%= object.text_field :email %>

но когда я пытаюсь получить ключ, я получаю сообщение об ошибке

<%= object.label :name %>

сказано

undefined method `label' for #<User:0x007f86000110c0>

почему это бросает это? я думал, что мог бы ссылаться на ключ как «объект».

Кроме того, я застрял на том, что заменить ?????? с. чтобы повторить ошибку выше, я достал ?????? но он выдаст еще одну ошибку из следующего частичного высказывания «объект» не определен. я не могу использовать что-то вроде f.object, потому что f больше не существует. Как я могу получить значение для передачи в следующий частичный?

спасибо большое =)

1 Ответ

2 голосов
/ 01 апреля 2012

Ну, вы передаете object: f.object, а f.object - это User. Затем вы пытаетесь вызвать object.label, но User не имеет label метода. Если вы передадите object: f.object, f: f, то в своей части вы можете позвонить f.label.

...