/ / nie można odwiedzić modułu wyliczającego edit_multiple - ruby-on-rails, ruby

nie można odwiedzić modułu wyliczającego edit_multiple - ruby-on-rails, ruby

Podczas próby edycji wielu odpowiedzi w formularzu pojawia się następujący błąd i kliknij przycisk Zapisz!

TypeError (Cannot visit Enumerator):
app/controllers/answers_controller.rb:61:in `edit_multiple"

Użytkownik powinien mieć możliwość przesłania odpowiedzi kilkarazy dla tego samego badania, a odpowiedzi są zapisywane jako instancja study_instance, która ma identyfikator study_id, user_id i odpowiedzi na pytania w tym badaniu. W kontrolerze studiów:

def group_answers
@study = Study.find_by_slug(params[:id])
@study_instance = StudyInstance.find(params[:study_instance])
@answers = @study_instance.answers
respond_to do |format|
format.html
format.json { render :json => @study }
end
end

W kontrolerze odpowiedzi mam to:

def edit_multiple
@keys = params[:answer].keys.collect
@answers = Answer.where(:id => @keys)
@answers.each { |t| t.attributes = params[:answer][t.id.to_s] }
if @answers.all?(&:valid?)
@answers.each(&:save!)
redirect_to studies_url, :notice => "Study was successfully changed."
else
return
end
end

A w widoku group_answers:

.block
.content
.inner
%h2
= @study.title
%p.description
= @study.description
= @questions
= form_for :answers, :url => edit_multiple_answers_path, :html => { :multipart => true }     do |f|
- @study_instance.answers.by_position.each do |answer|
.block
.content
.inner
%p
= answer.position
.
= answer.question.question_text
%br/
= fields_for "answer[#{answer.id}]" do |f|
- if answer.question.long_text
= f.text_area :answer_text, :value => answer.answer_text
- elsif answer.question.short_text
= f.text_field :answer_text, :value => answer.answer_text
- elsif answer.question.file_upload
= f.file_field :answer_image
%br/
%span.description
Must be at least 500px x 500px and in gif or jpg format.
%br/
No characters other than letters and numbers in file name.
%br/
Current_file:
%br/
= answer.answer_image_file_name ? (image_tag     answer.answer_image.url(:thumb)) : "none"
- else
= f.select :answer_text, answer.question.options_from_choices, :selected     => answer.answer_text, :include_blank => true

.group.navform.wat-cf
%button.button{:type => "submit"}
= image_tag("web-app-theme/icons/tick.png", :alt => "#{t("web-app-theme.save",     :default => "Save")}")
= t("web-app-theme.save", :default => "Save")
%span.text_button_padding= t("web-app-theme.or", :default => "or")
= link_to t("web-app-theme.cancel", :default => "Cancel"), studies_path, :class =>     "text_button_padding link_button"

Wciąż nie znam się na szynach i nie apologuję, jeśli to jest coś bardzo prostego, ale mnie zaskoczyło.

Odpowiedzi:

0 dla odpowiedzi № 1

Uważam, że kodowanie jest trochę dziwne ... Myślę, że lepiej jest użyć atrybutów zagnieżdżonych. Dokumentację można znaleźć tutaj: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html i przykład tutaj: http://railscasts.com/episodes?utf8=%E2%9C%93&search=nested.