【发布时间】:2018-01-25 09:58:18
【问题描述】:
我想复制我的模型“公式”和“问题”。他们有一个 has_may/belongs_to 关系。 我能够复制第一个模型,但在 FormulairesController#duplicate 中有一个“NoMethodError” 当我复制第二个时,未定义方法 `save' for #"
我的模型:
公式.rb
class Question < ActiveRecord::Base
belongs_to :formulaire
validates :nom, presence: true
end
问题.rb
class Formulaire < ActiveRecord::Base
has_many :questions, dependent: :destroy
end
formulaire_controller.rb
def duplicate
template = Formulaire.find(params[:id])
@formulaire= template.dup
@formulaire.save
#for question in @formulaire.questions
# question.dup
# question.save
#end
template2 = Question.where(formulaire_id: 47)
@question = template2.dup
@question.save
redirect_to @formulaire, notice: "Formulaire dupliqué"
end
def formulaire_params
params.require(:formulaire).permit(:name, :description,
questions_attributes: [:id, :nom, :typequestion, :image, '_destroy', photos_attributes:[:id],
answers_attributes:[:id, :content,'_destroy']]) if params[:formulaire]
#puts YAML::dump params
end
我的看法
公式/show.html.erb
<li class="Dupliquer"><%= link_to 'Dupliquer', duplicate_formulaire_path(@formulaire) %> </li>
routes.rb
resources :formulaires do
member do
get 'duplicate'
end
end
谢谢
【问题讨论】:
-
尝试 template2 = Question.find_by(formulaire_id: 47) 或 template2 = Question.where(formulaire_id: 47).first
-
find_by 不起作用我有一个错误,不能将 dup 用于 Nil::Class。
-
第二种方法复制了第一个模型,但没有复制第二个
-
can't use dup for a Nil::Class 表示找不到记录,请仔细检查记录是否存在。
标签: ruby-on-rails