这个问题非常棘手。 App有一个rfq模型:
class Rfq < ActiveRecord::Base
has_and_blongs_to_many :standards
end
表rfqs_standards仅创建了两列:一个用于rfq_id,另一个用于standard_id。
以rfq新形式嵌入标准选择。以下是html页面的来源:
<div class="input select optional">
<label class="select optional" for="rfq_standard_ids"> Standard:</label>
<select class="select optional" id="rfq_standard_ids" multiple="multiple" name="rfq[standard_ids][]" size="5">
<option value="1">FCC15</option>
<option value="2">Roth EU</option>
</select>
</div>
从源头可以看出,rfq [standard_ids]将携带标准的输入值。
我的问题是如何将rfq_id和standard_id对保存到表rfqs_standards以及保存rfq?
在rfq模型中定义了一个setter,用于将id保存到rfqs_standards中。然而,setter所做的只是保存相同的rfq 3次(在rfq新页面上有3个标准选择)并且没有做任何保存id对。二传手是:
def standard_ids=(attributes)
attributes.each do |attr|
standards.build(attr)
end
end
有什么想法?感谢。
答案 0 :(得分:0)
这是解决方案。在创建rfq控制器时,添加:
#save into join table rfqs_standards
params[:rfq][:standard_ids].each do |sid|
@rfq.standards << Standard.find(sid.to_i)
end
此循环将所选的每个标准添加到@ rfq.standards。当@ rfq.save时,对id被保存到连接表rfqs_standards。