gpt4 book ai didi

ruby-on-rails - Rails 4 - 无法连接到 rails 4 上的数据库表

转载 作者:行者123 更新时间:2023-12-03 19:45:02 25 4
gpt4 key购买 nike

我正在学习如何使用嵌套属性的教程,我正在进行调查,但是出现了问题,因为我无法在问题表中插入任何数据

这就是我所做的:

问题模型

class Question < ActiveRecord::Base
belongs_to :survey
has_many :answers, dependent: :destroy
end

调查模型
class Survey < ActiveRecord::Base
has_many :questions, dependent: :destroy
accepts_nested_attributes_for :questions , :reject_if => lambda { |a| a[:content].blank? }
end

意见/调查/_form.erb
<%= form_for(@survey) do |f| %>


<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>



<%= f.fields_for :questions do |ff| %>
<div class="field">
<%= ff.label :content , "question"%><br>
<%= ff.text_field :content %>
</div>
<% end %>

<div class="actions">
<%= f.submit %>
</div>

<% end %>

调查 Controller
# GET /surveys/new
def new
@survey = Survey.new
3.times { @survey.questions.new }
end

现在,当我单击提交时,仅保存调查名称,但没有问题!
像这样 :
2.1.1 :023 > Question.all
Question Load (0.3ms) SELECT "questions".* FROM "questions"
=> #<ActiveRecord::Relation []>

创建 Action
# POST /surveys
# POST /surveys.json
def create
@survey = Survey.new(survey_params)

respond_to do |format|
if @survey.save
format.html { redirect_to @survey, notice: 'Survey was successfully created.' }
format.json { render action: 'show', status: :created, location: @survey }
else
format.html { render action: 'new' }
format.json { render json: @survey.errors, status: :unprocessable_entity }
end
end
end
 private
# Use callbacks to share common setup or constraints between actions.
def set_survey
@survey = Survey.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def survey_params
params.require(:survey).permit(:name)
end
end

我添加了另一个模型 [答案]
class Answer < ActiveRecord::Base
belongs_to :question
end

将问题模型更改为此
class Question < ActiveRecord::Base
belongs_to :survey
has_many :answers, dependent: :destroy
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:content].blank? }, allow_destroy: true
end

我将调查更改为
# GET /surveys/new
def new
@survey = Survey.new
1.times do
question = @ survey.questions.build
2.times { question.answers.build }
end
end

现在与答案相同的先前问题
我应该如何处理强参数

应该是这样的
def survey_params
params.require(:survey).permit(:name, answers_attributes: [:content])
end

最佳答案

听起来你没有 questions_attributes列在调查的允许参数中。

确保您的 survey_params包括这样的问题属性:

private

def survey_params
params.require(:survey).permit(:name, questions_attributes: [:content])
end

如果您有其他调查属性或问题属性,您也需要在此处允许它们。

Strong parameters with nested attributes documentation

关于ruby-on-rails - Rails 4 - 无法连接到 rails 4 上的数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23035840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com