我的 Rails 应用程序有问题。我有 3 个表(技能、版本和技能版本)。Skillversion 有来自技能和版本的 2 个外键列)我有一个技能版本表单,每次添加与版本关联的技能时,它应该从下拉列表中添加一个技能并使用版本(从版本表中获取列表)。
问题:当我提交表单时。它在版本表中添加一个具有不同 id 的新版本行。如果存在类似版本,我不希望它添加不同的行。提交技能版本表后,应该获取现有版本的id并将其添加到技能版本中的version_id列。如果您需要更多信息,请帮助并告诉我。我正在附加项目中的相关代码。
现在:它不会在技能版本表中添加任何值
模型/技能.rb
class Skill < ActiveRecord::Base
has_many :skillversions
end
模型/skillversion.rb
class Skillversion < ActiveRecord::Base
belongs_to :skill
belongs_to :version
end
模型/版本.rb
class Version < ActiveRecord::Base
has_many :skillversions
end
控制器/skillversions_controller.rb
def create
@version = Version.find(:number)
@skill = Skill.new(params[:skill].permit(:name))
if @skill.save
@skillversion = Skillversion.new(params[:skillversion].permit(:version_id, :isActive))
@skillversion.skill = @skill
@skillversion.version = @version
if @skillversion.save
redirect_to skillversions_index_path
else
render json: @skillversion.errors, status: :internal_server_error
end
end
render json: @skill.errors, status: :internal_server_error
end
意见/技能版本/_form.html.erb
<%= fields_for :skill do |s| %>
<%= fields_for :version do |v| %>
<form class="form-horizontal" id="dform">
<div class="control-group">
<%= s.label :name, 'Skill Name', :class => "control-label" %>
<div class="controls">
<%= s.text_field :name, :class => "controls" %>
</div>
</div>
<div class="control-group">
<%= v.label :number, 'Version', :class => "control-label" %>
<div class="controls" >
<%= v.collection_select :number, Version.find(:all), :id, :number, :class => "dropdownwidth" %>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox" >
<%= sv.check_box :isActive, :class => "controls " %>
<%= sv.label :isActive, 'Active?', :class => "checkbox" %>
</label>
<%= sv.submit 'create it!', :class => "metro" %>
</div>
</div>
</form>
<% end %>
<% end %>
先感谢您!