我是Rails的新手,并寻求通往Rails的方式。
现在我正在寻找在我的表单中使用相关模型中的值的方法。例如,我使用* has_one *关系创建两个模型。主表“产品”有一个字段“unit_id” - 来自相关表“单位”的项目ID。
澄清:型号产品中的商品属性为“单位”。一个产品有一个属性单位。模型单元中的项目是唯一的,一个项目单元可能属于产品中的许多项目。
在我的表单中,我想为新产品选择单位,我可以打开单位#index的表格,但我如何以来电形式返回并使用所选项目?
代码:
1。型号产品:
class Product < ActiveRecord::Base
# ...
belongs_to :unit
end
2。型号单位:(它没有代码)
class Unit < ActiveRecord::Base
end
第3。使用相关表单请求的模板:
<%= form_for(@product) do |product_form| %>
...
<%= product_form.label :"#{t('unit')}:"%>
<%= link_to t('unit_select'), units_path%>
...
<div class="actions">
<%= product_form.submit %>
</div>
<% end %>
4。具有单位索引的表单模板,我想从中做出选择:
<%@units.each do |unit|%>
<a href="<%=units_path%>">
<div>
<%= unit.shortname %>
<%= unit.fullname %>
<%= unit.okei %>
</div>
</a>
<%end%>
我的问题是:我该怎么做?我如何返回并使用Units表中的选定项目?
P.S。对不起我的英语不好。 P.P.S.我有示例图片,但没有声明将它们包含在我的问题中: https://plus.google.com/photos/101112417211111476248/albums/5848798001333173089/5889575276122513954?banner=pwa&pid=5889575276122513954&oid=101112417211111476248
答案 0 :(得分:0)
我会给你3种不同的选择:
1 - 最好的解决方案是在您的表单中提供单位列表,然后在那里选择IMO。更容易实现,并为用户提供更好的体验。
2 - 在表单product_form.unit_id
中添加hidden_field。然后你可以使用http://lokeshdhakar.com/projects/lightbox2/显示单位并添加一个javascript,当用户点击一个单位时,它将关闭灯箱并用id为单位更新hidden_field值
3 - 添加指向单位页面中单位的链接,该单位将重定向到表单页面,通过unit_id参数,然后在控制器中执行以下操作:@product.unit = Unit.find(params["unit_id"] if params["unit_id"].present?
。但是这样你就会失去先前改变的数据,当然不是一个好的解决方案