2016-06-20 4 views
1

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

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]) 

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

+0

можете ли вы ввести код для document_params? –

+0

Да, возможно, [сильные параметры] (http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html) проблема? Разрешили ли вы: financial_id в документе? – Huw

ответ

1

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

Потому что, тем 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 
Смежные вопросы