我正在使用此设计制作术语翻译应用程序: database design Lang模型用于存储语言数据(如En,de,Chinese..etc)。 术语模型用于存储术语数据(如World Bank,Tesla..etc)。 翻译模型用于存储翻译数据,将术语模型中的两个术语ID作为一对术语翻译关联起来。
三个模型中的任何两个都没有关联。
现在我的问题在于翻译#new我无法同时创建翻译数据(两个新术语'ID)和两个新术语。
翻译控制器:
class TranslationsController < ApplicationController
def new
@translation = Translation.new
@term1 = Term.new
@term2 = Term.new
@translation.term1_id = @term1.id
@translation.term2_id = @term2.id
end
def create
@translatioin = Translation.new(translation_params)
@term1 = Term.new(term_params)
@term2 = Term.new(term_params)
@translation.term1_id = @term1.id
@translation.term2_id = @term2.id
if @translation.save
flash[:success] = "Term translation created successfully!"
redirect_to translations_path
else
render 'new'
end
end
def index
@translations = Translation.all
end
private
def translation_params
params.require(:translation).permit(:id, :term1_id, :term2_id)
end
def term_params
params.require(:term).permit(:id, :lang_id, :name)
end
end
翻译视图中的
new.html.erb:
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Term Translation</h2>
<%= form_for @translation do |f| %>
<%= fields_for @term1 do |m| %>
<h4>Term 1</h4>
<div class="form-group">
<%= m.label 'Original Language' %>
<%= m.collection_select :lang_id, Lang.order(:name), :id, :name, {prompt: "Select Language"}, {class: "form-control"} %>
</div>
<div class="form-group">
<%= m.label 'Term' %>
<%= m.text_field :name, class: 'form-control' %>
</div>
<% end %>
<%= fields_for @term2 do |n| %>
<h4>Term 2</h4>
<div class="form-group">
<%= n.label 'Destination Language' %>
<%= n.collection_select :lang_id, Lang.order(:name), :id, :name, {prompt: "Select Language"}, {class: "form-control"} %>
</div>
<div class="form-group">
<%= n.label 'Translated Term' %>
<%= n.text_field :name, class: 'form-control' %>
</div>
<% end %>
<br>
<%= f.submit 'Create', class: 'btn btn-primary' %>
<br>
<% end %>
</div>
</div>
</div>
运行代码后,结果是“param丢失或值为空:翻译”。
我还发现控制台消息显示只发送了一个术语的数据: 参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“zoV5mhJTT4ESicgMe76 + KtExlSMGDR8W9lgcV1idwkrSvC77vDO1mfLK4gzTx0LPiXrlMjsw + MGpEWQ3tJiA0w ==”,“term”=&gt; {“lang_id”=&gt;“9”,“name”= &gt;“Weltbank”},“commit”=&gt;“创建”}
我未能同时保存两个术语和一个翻译记录。请让我知道如何修改我的代码。