Создание ассоциированной модели с рельсами

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

def create
  @financial = Financial.find(2)
  @document = @financial.documents.create(document_params)
  ...
end

На мой взгляд, у меня есть форма, которая выглядит так, чтобы выбрать правильный финансовый

<%= form_for Document.new do |f| %>
<%= f.collection_select :financial_id, Financial.all, :id, :description %>
<%= f.submit %>

Я вижу, что правильные параметры передаются в журнале, когда я отправляю форму

"financial_id"=>"3"

Поэтому я решил, что мне просто нужно изменить исходный код на:

def create
  @financial = Financial.find(params[:financial_id])
  @document = @financial.documents.create(document_params)
  ...
end

но я получаю «Не удалось найти финансовый с« id » =». Я пробовал другие вещи, включая:

  @financial = Financial.find_by(id: params[:financial_id])

Без особого успеха. Может ли кто-нибудь дать мне соответствующий синтаксис, пожалуйста? Спасибо.


person Bastien    schedule 20.06.2016    source источник
comment
вы можете поставить код для document_params ?   -  person Sahil Grover    schedule 20.06.2016
comment
да, возможно проблема с сильными параметрами? Разрешили ли вы :financial_id в документе?   -  person Huw    schedule 20.06.2016


Ответы (1)


Не удалось найти финансовые с 'id'=

Потому что отправленные params фактически находятся внутри хэша document. Так что params[:financial_id] не сработает. Вместо этого вам нужно использовать params[:document][:financial_id]

def create
  @financial = Financial.find(params[:dcument][:financial_id])
  @document = @financial.documents.create(document_params)
  ...
end
person Pavan    schedule 20.06.2016