具有堆栈:字段和嵌套属性

时间:2014-09-14 14:20:04

标签: ruby nested-attributes form-for

使用接受嵌套属性+ form_for构建一些简单的项目和堆栈。

现在我对代码没有任何问题,所有工作和保存,但是当我取消注释accepts_nested_attributes_fori有错误或我的模型没有创建(我尝试过去5天的differente变种,但不能构建这个权利..)。我认为我在控制器中有问题..我的代码(没有accepted_nested_attributes工作)。 型号:

class Project < ActiveRecord::Base  
  belongs_to :user
  has_one :j_project
  has_one :p_project

#  accepts_nested_attributes_for :p_project, :j_project

  validates :user_id, :title, presence: true
end

查看:

= form_for(@project) do |f|
  = f.label :title
  = f.text_field :title
  = fields_for @p_project do |fa|
    = fa.label :requester
    = fa.text_field :requester
  = fields_for @j_project do |ffa|
    = ffa.label :j_login
    = ffa.text_field :j_login
    = ffa.label :j_password
    = ffa.text_field :j_password
  = f.submit "Save", class: "btn btn-large btn-primary"

控制器:

class ProjectsController < ApplicationController

  def new
    @project = Project.new
    @p_project = @project.build_p_project
    @j_project = @project.build_j_project
  end

  def create
    @project = Project.new(project_params)
    @project.user = current_user
    @p_project = @project.build_p_project(p_project_params)
    @j_project = @project.build_j_project(j_project_params)
    if @project.save && @p_project.save && @j_project.save
      flash[:success] = "New project was added successfully"
      redirect_to user_root_path
    else
      render 'new'
    end
  end

  private
    def project_params
      params.require(:project).permit(:title)
    end

    def p_project_params
      params.require(:p_project).permit(:requester)
    end

    def j_project_params
      params.require(:j_project).permit(:j_login, :j_password)
    end
end

1 个答案:

答案 0 :(得分:0)

问题在于验证: j_project和p_project中的project_id - 当我将它们驱逐时,一切正常。 我也使用互联网的指南来编辑我的simple_form和控制器...但是我在谷歌找不到的问题是验证。