2015-09-10 4 views
0

Я успешно получил CSV-файлы, которые будут импортированы в соответствии с шагами, описанными в эпизоде ​​Railscast 396. Однако теперь я пытаюсь импортировать csv, который является вложенным. Я видел другие сообщения, в которых люди пытаются импортировать родительские и дочерние данные, но в этом случае я пытаюсь импортировать дочерние данные только в представление представления econ_report.Rails - импортировать файл csv во вложенный маршрут

Например, у меня есть econ_results, который я пытаюсь импортировать, который вложен в econ_report. В файле рейка отображается следующая ссылка.

import_econ_report_econ_results 

При попытке загрузить страницу шоу для econ_report я получаю следующую ошибку

No route matches {:action=>"import", :controller=>"econ_results", :id=>"1"} missing required keys: [:econ_report_id] 

У меня есть следующий код в файле econ_result.rd:

def self.to_csv 
CSV.generate do |csv| 
    csv << column_names 
    all.each do |sub| 
    csv << sub.attributes.values_at(*column_names) 
    end 
end 
end 

def self.import(file) 
CSV.foreach(file.path,headers: true) do |row| 
    EconResult.create! row.to_hash 
end 
end 

Наконец , в econ_results_controller у меня есть следующий код:

before_action :set_econ_report 
def set_econ_report 
@econ_report = EconReport.find(params[:econ_report_id]) 
end 

def import 
EconResult.import(params[:file]) 
end 

def create 
@econ_result = @econ_report.econ_results.create(econ_result_params) 
redirect_to @econ_report 
end 

Является ли обозначение @econ_report причиной конфликта в контроллере?

ответ

0

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

<%= link_to import_econ_report_econ_results_path(econ_report_id: @econ_report) %> 

Я бы написал вспомогательный метод, так как имя смешно длинное.

+0

Это сделало Max! Благодаря! –

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