【发布时间】:2014-09-14 14:20:03
【问题描述】:
使用接受嵌套属性 + form_for 构建一些简单的项目和堆栈。
现在我的代码没有问题,所有的工作和保存,但是当我取消注释时,accepted_nested_attributes_fori 有错误或我的模型没有创建(我在过去 5 天尝试不同的变体,但无法正确构建这个..)。我认为我的控制器有问题。我的代码(没有接受的嵌套属性)。 型号:
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
【问题讨论】:
标签: ruby nested-attributes form-for