基本的に、コントローラーでメソッドを呼び出してパーシャルを起動するためのドロップダウンがあります。パーシャルを以下に示します。
<%= form_for :exam_report, :url=>{:action=>'generated_report'} do |z| %>
<%= select_tag :exam_report_batch,
options_for_select(
Batch.find(:all,:select=>"name,id").collect{|c| [c.name,c.id]}),
:data => { :remote => true, :url => url_for(:controller => "exam",
:action => "list_exam_types",
:prompt =>"Select a batch")} %>
<div id="exam-group-select">
<%= select :exam_report, :exam_group_id, @exam_groups.map{|exam| [exam.name,exam.id]},:prompt=> "#{t('select_exam_group')}" %>
</div>
<%= z.submit "View", class: "btn btn-large btn-primary" %>
<% end %>
Exam コントローラーの「list_exam_types」メソッドを以下に示します。
def list_exam_types
batch = Batch.find(params[:batch_id])
@exam_groups = ExamGroup.find_all_by_batch_id(batch.id)
respond_to do |format|
format.html
format.js
end
end
そのため、ドロップダウンからバッチを選択すると、次のエラーが表示されます: ActiveRecord::RecordNotFound (Couldn't find Batch without an ID): app/controllers/exam_controller.rb:224:in `list_exam_types'
私のルートを以下に示します。
resources :batches do
resources :exam_groups
resources :additional_exam_groups
resources :elective_groups
end
resources :exam_groups do
resources :exams do
member do
post :save_scores
end
end
end
私は自分のルートをよく知っていると思うので、params[:batch_id] が空である理由がわかりません。あなたの助けは大歓迎です、ありがとう!