1

我有两个实体ProjectDomainProject belongs_to DomainDomain has_many Projects。所以我从我的project index view填充表格,如果我不添加 accepts_nested_attributes_for :domainproject.rb我可以看到文本字段,如果我添加该行,则文本字段消失。在rails 4.0中的嵌套表格

此外,我在我的日志文件中得到这个:Unpermitted parameters: 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 

查看

<%=simple_form_for @project do |f|%> 
    <%= f.input :name, label: 'Project name:'%> 
    <%= f.simple_fields_for :domain do |d|%> 
     <%= d.input :name, label: 'Domain name:', placeholder: 'domain.co.uk'%> 
    <%end%> 
    <%=f.button :submit, class: 'btn btn-success btn-sm'%> 
    <%end%> 

我得到这个只有当我不加accepts_nested_attributes_for :domain

参数:{ “UTF8”=> “✓”,“项目“=> {”name“=>”test“,”domain“=> {”name“=>”test123.com“}},”commit“=>”Create Project“}

It我的domain_idprojects中很重要。我能做些什么来解决这个问题。

回答

1

你需要建立一个域,以便有要在fields_for :domain在您的新动作使用的对象:

def new 
    @project = ... 
    @project.build_domain 
    ... 
end 

在日志中Unpermitted parameters: domain.消息是因为在你project_params方法,你不允许一个:domain参数,但您的表单正在发送一个。应该好好想想,这只是一个警告。