Ruby on rails rails 4.0中的嵌套表单
我有两个实体,Ruby on rails rails 4.0中的嵌套表单,ruby-on-rails,ruby-on-rails-4,nested-forms,nested-attributes,Ruby On Rails,Ruby On Rails 4,Nested Forms,Nested Attributes,我有两个实体,Project和Domain项目属于域,域有许多项目。因此,我从我的项目索引视图填充表单,如果我不添加 接受project.rb中的域的嵌套属性。我可以看到文本字段,如果我添加了该行,文本字段将消失 我在日志文件中也得到了这一点:未经允许的参数:domain 项目控制员: def create @domain = params[:domain][:name] @domain = Domain.find_or_create_by(name: @domain) @p
Project
和Domain
项目属于域
,域有许多项目
。因此,我从我的项目索引视图
填充表单,如果我不添加
接受project.rb中的域
的嵌套属性。我可以看到文本字段,如果我添加了该行,文本字段将消失
我在日志文件中也得到了这一点:未经允许的参数:domain
项目控制员:
def create
@domain = params[:domain][:name]
@domain = Domain.find_or_create_by(name: @domain)
@project = current_user.projects.new(project_params)
@project.domain_id = @domain.id
if @project.save
end
end
def project_params
params.require(:project).permit(:name, :user_id, domain_attributes: [:name])
end
看法
只有当我不为:域添加接受\u嵌套的\u属性\u时,我才会得到这个
参数:{“utf8”=>“✓", "项目“=>{”name“=>“test”,“domain”=>{“name”=>“test123.com”}},“commit”=>“Create project”}
在项目中有我的域id
很重要。如何解决此问题。您需要构建一个域,以便在新操作中有一个对象将用于域的字段。\u:domain
:
def new
@project = ...
@project.build_domain
...
end
日志中的未授权参数:域。
消息是因为在项目参数
方法中,您不允许使用:域
参数,但您的表单正在发送一个参数。这应该是一个很好的想法,它只是一个警告。您需要构建一个域,以便在您的新操作中有一个对象要在域的字段中使用:
def new
@project = ...
@project.build_domain
...
end
日志中的未授权参数:域。
消息是因为在项目参数
方法中,您不允许使用:域
参数,但您的表单正在发送一个参数。这应该是个好主意,这只是一个警告