2014-10-18 3 views
1

Где находится этот "0", исходящий от owners_attributes? Все работает, но эта клавиша «0» кажется странно неуместной. Нормально ли это/ошибка/или какая-то настройка? Оставить его в покое или удалить? Благодаря!Вложенные атрибуты активной записи, генерирующие «0» в качестве хэша?

Parameters: {"utf8"=>"✓", "shorturl"=>{"redirect"=>"http://www.test.com", 
        "owners_attributes"=>{"0"=>{"email"=>"[email protected]"}}}... 

Strong_params:

def shorturl_params 
    params.require(:shorturl).permit(:redirect, owners_attributes: [:email]) 
end 

модели:

class Shorturl < ActiveRecord::Base 
    has_many :campaigns 
    has_many :owners, through: :campaigns 
    accepts_nested_attributes_for :owners 
    ... 

ответ

1

Это внутренний формат для того, как они перенесены с помощью параметров HTTP. Он позволяет включать несколько наборов вложенных атрибутов.

Это выглядит немного странно, но это не должно вызывать беспокойства. Вложенный обработчик атрибутов будет знать, что с ним делать. Это только проблема, если вам нужно манипулировать ими, прежде чем они будут перехвачены обработчиком по умолчанию, но этого лучше избегать.

+0

Благодарим за информацию. Я стараюсь делать как можно больше своей «рыбалки». Не могли бы вы поделиться тем, как вы ходили * об открытии * этих знаний ... Еще раз спасибо! @tadman – fyz

+0

Вероятно, так же, как и вы, занимаясь формами такого рода и уделяя пристальное внимание параметрам. Я привык оставлять 'log/development.log' открытым с помощью' tail -f', чтобы я мог видеть, что делает Rails при загрузке страниц. Это первое место, когда что-то не работает правильно. Способ упаковки пакетов довольно очевиден, если вы там смотрите. – tadman

Смежные вопросы