Не удалось найти <model>без идентификатора с вложенными атрибутами - PullRequest
1 голос
/ 04 марта 2012

У меня есть супер простая форма, которую я пытаюсь использовать для обновления нескольких записей одновременно.Я на Рейлсе 3. Я прошел через все рейки и т. Д. И в этот момент выдергиваю волосы.Я использую Devise, и у меня есть контроллер контактов.Пользователи имеют_many: контакты и принимают_несед_аттрибуты_ для: контакты.Форма выглядит так:

<%= form_for @user, :url => '/updateusercontacts' do |i| %>
<%= i.fields_for :contacts do |f| %>    
    <%= f.label :first_name %>
    <%= f.text_field :firstname %>

    <%= f.label :last_name %>
    <%= f.text_field :lastname %>

    <%= f.label :phone_number %>
    <%= f.text_field :phonenumber %>
    <%= f.label :user_id %>
    <%= f.text_field :id %>
    <p>


<% end %>

Форма отображается правильно, но при отправке я получаю сообщение «Не удается найти контакт без идентификатора».Контроллер выглядит так:

def updatecontacts
    @contacts = Contact.find(params[:id])
    @contacts.each do |contact|
        contact.update_attributes(params[:id])
    end

render '/home'

end

Параметры кажутся правильными, и идентификаторы, кажется, присутствуют и корректны, но я не могу заставить сохранение работать!Я уверен, что упускаю что-то очевидное здесь.

1 Ответ

0 голосов
/ 25 июля 2012

Попробуйте удалить fields_for, и когда вы вызываете свою находку, используйте эту [: user] [: contacts] Ваш код должен выглядеть следующим образом. Вид:

  <%= form_for @user, :url => '/updateusercontacts' do |i| %>
    <%= i.label :first_name %>
    <%= i.text_field :firstname %>

    <%= i.label :last_name %>
    <%= i.text_field :lastname %>

    <%= i.label :phone_number %>
    <%= i.text_field :phonenumber %>
    <%= i.label :user_id %>
    <%= i.text_field :id %>
    <p>
<% end %>

Контроллер

def updatecontacts
    @contacts = Contact.find(params[:user][:contacts])
    @contacts.each do |contact|
        contact.update_attributes(params[:user][:contacts])
    end

render '/home'

end

Надеюсь, это сработает.

...