首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套模型表单在rails上不起作用

嵌套模型表单在rails上不起作用
EN

Stack Overflow用户
提问于 2012-06-10 06:28:28
回答 1查看 87关注 0票数 0

我对ruby on rails和编程都是新手。我正在试着开发一个应用程序,但我现在被卡住了。我在观察http://railscasts.com/episodes/196-nested-model-form-part-1来创建嵌套的模型表单,但是我遇到了一个错误。我的问题详细信息如下;

我有雇主模型,雇主模型has_many面试,面试模型has_many自定义问题。我正在尝试创建一个表单,我将通过该表单收集信息来创建面试。虽然我做了所有必要的组合,但当我提交表单时,会出现错误,提示"Customquestions面试不能为空“。我可以肯定的是,这是因为我错过了面试控制器中的一些代码。下面你可以看到我的面试控制器和我用来提交信息的表单模板。

面谈控制器

代码语言:javascript
复制
class InterviewsController < ApplicationController
  before_filter :signed_in_employer

  def create
    @interview = current_employer.interviews.build(params[:interview])

    if @interview.save
      flash[:success] = "Interview created!"
      redirect_to @interview
    else
      render 'new'
    end
  end

  def destroy
  end

  def show
    @interview = Interview.find(params[:id])
  end

  def new
    @interview = Interview.new
      3.times do
    customquestion = @interview.customquestions.build
     end
  end
end

我用来提交信息的表单:

代码语言:javascript
复制
<%= provide(:title, 'Create a new interview') %>
<h1>Create New Interview</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@interview) do |f| %>
    <%= render 'shared/error_messages_interviews' %>

      <%= f.label :title, "Tıtle for Interview" %>
      <%= f.text_field :title %>

      <%= f.label :welcome_message, "Welcome Message for Candidates" %>
      <%= f.text_area :welcome_message, rows: 3 %>

      <%= f.fields_for :customquestions do |builder| %>
        <%= builder.label :content, "Question" %><br />
        <%= builder.text_area :content, :rows => 3 %>
      <% end %>
      <%= f.submit "Create Interview", class: "btn btn-large btn-primary" %>
    <% end %>
  </div>
</div>

在面试模型中,我使用了accepts_nested_attributes_for :customquestions

面试模型

代码语言:javascript
复制
class Interview < ActiveRecord::Base
  attr_accessible :title, :welcome_message, :customquestions_attributes
  belongs_to :employer
  has_many :customquestions
  accepts_nested_attributes_for :customquestions

  validates :title, presence: true, length: { maximum: 150 }
  validates :welcome_message, presence: true, length: { maximum: 600 }
  validates :employer_id, presence: true
  default_scope order: 'interviews.created_at DESC'
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-10 06:46:45

验证错误在自定义问题模型中引发,因为(我假设)它是validates :interview_id的。问题是,在保存父对象( Interview )之前,不会设置interview_id,但是在保存Interview之前,会运行customquestion的验证。

您可以通过将选项:inverse_of=> :customquestions添加到自定义问题模型中的belongs_to :interview来让客户问题了解此依赖关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10965029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档