Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 嵌套窗体具有多个直通滑轨4_Ruby On Rails_Ruby_Ruby On Rails 4_Nested Forms - Fatal编程技术网

Ruby on rails 嵌套窗体具有多个直通滑轨4

Ruby on rails 嵌套窗体具有多个直通滑轨4,ruby-on-rails,ruby,ruby-on-rails-4,nested-forms,Ruby On Rails,Ruby,Ruby On Rails 4,Nested Forms,我没有得到预期的结果,技能也没有得到保存。我想让每个人都只说一个基本技能1 分贝 模型 class Person < ActiveRecord::Base has_many :entity_skills has_many :skills, through: :entity_skills, foreign_key: "person_id" accepts_nested_attributes_for :skills end class Skill < ActiveReco

我没有得到预期的结果,技能也没有得到保存。我想让每个人都只说一个基本技能1

分贝

模型

class Person < ActiveRecord::Base
  has_many :entity_skills
  has_many :skills, through: :entity_skills, foreign_key: "person_id"
  accepts_nested_attributes_for :skills
end


class Skill < ActiveRecord::Base
 has_many :entity_skills
 has_many :people, through: :entity_skills, foreign_key: "person_id"
end

class EntitySkill < ActiveRecord::Base
  belongs_to :person
  belongs_to :skill
end
形式

没有为技能保留任何东西,有人能解释一下发生了什么吗?

DB

  # == Schema Information
  #
  # Table name: entity_skills
  #
  #  id          :integer          not null, primary key
  #  skill_id    :integer
  #  person_id   :integer
  #  created_at  :datetime
  #  updated_at  :datetime
  #  position    :integer
  #
控制器

def new
  @person = Person.new
  @all_skills = Skill.all
  @entity_skills = @person.skills.build

end

def edit
  @all_skills = Skill.all

  @entity_skills = @person.entity_skills.build
end

def create
  @person = Person.new(person_params)

  respond_to do |format|
    if @person.save
      format.html { redirect_to @person, notice: 'Person was successfully created.' }
      format.json { render action: 'show', status: :created, location: @person }
    else
      format.html { render action: 'new' }
      format.json { render json: @person.errors, status: :unprocessable_entity }
    end
  end
end

 def person_params
  params.require(:person).permit(:first_name, :last_name, :headline, :description, :user_id, :employer_id, skills_attributes: [:id])
end
  def new
    @person = Person.new
    @all_skills = Skill.all
    5.times {@person.entity_skills.build}
  end

  def create
    @person = Person.new(person_params)
    respond_to do |format|
      if @person.save

        format.html { redirect_to @person, notice: 'Person was successfully created.' }
        format.json { render action: 'show', status: :created, location: @person }
      else
        format.html { render action: 'new' }
        format.json { render json: @person.errors, status: :unprocessable_entity }
      end
    end
  end

    def person_params
       params.require(:person).permit(:first_name, :last_name, :headline, :description, :user_id, :employer_id,  :entity_skills_attributes  => [:skill_id, :position, :person_id, :id])
    end
形式

  <h2>Skills</h2>
  <% i=0 %>
  <%= f.fields_for :entity_skills do |builder| %>
    <% i+=1 %>
    <%= render 'shared/skills_fields', :f => builder, :i=> i %>
  <% end %>
我将利用这个职位重新安排技能,以防有人怀疑-


终于解决了

如果不构建连接记录,就无法保存多个连接


也许Dave Shepard对此进行了检查,它通过一个完整的示例详细介绍了您需要做的事情。

检查rails输出日志中的未经许可的参数。所有这些都已被接受,我尝试了上述方法和我发布的允许参数的原始方法-结果都是一样的,除了上述sqlMy解决方案工作的人之外,没有执行任何sql,不过谢谢你的提示,我已经用过上面的代码了。
  def new
    @person = Person.new
    @all_skills = Skill.all
    5.times {@person.entity_skills.build}
  end

  def create
    @person = Person.new(person_params)
    respond_to do |format|
      if @person.save

        format.html { redirect_to @person, notice: 'Person was successfully created.' }
        format.json { render action: 'show', status: :created, location: @person }
      else
        format.html { render action: 'new' }
        format.json { render json: @person.errors, status: :unprocessable_entity }
      end
    end
  end

    def person_params
       params.require(:person).permit(:first_name, :last_name, :headline, :description, :user_id, :employer_id,  :entity_skills_attributes  => [:skill_id, :position, :person_id, :id])
    end
  <h2>Skills</h2>
  <% i=0 %>
  <%= f.fields_for :entity_skills do |builder| %>
    <% i+=1 %>
    <%= render 'shared/skills_fields', :f => builder, :i=> i %>
  <% end %>
   <div class="field">
   <%= f.label "All Skills" %>

   <%= f.collection_select(:skill_id, Skill.all, :id, :title) %>
     <%= f.hidden_field :position, :value=>i %>
     <%= f.hidden_field :person_id, :value=>@person.id %>
  </div>
 def edit
   @entity_skills=  @person.entity_skills
 end