这是我的问题。假设我的域由两个模型组成,工厂和工人。现在,当用户在 _form 视图中创建 Worker 时,他们必须选择一个 Factory。为此,提供了一个基于工人状态的工厂列表,并且每当工人的状态发生变化时,下拉列表的内容都会通过 JS 进行更改。这就像一个魅力。
但是,当要编辑用户时,我似乎被卡住了作为填充和自动选择工人工厂的公认方式。似乎对于编辑视图,带有 options_for_select 指定的选择标签是要走的路。不幸的是,这会在添加新 Worker 时破坏我的 _form 视图,因为它们没有我可以填充集合的状态。
TL;DR 我可以使用 JS 在新的 _form 视图中填充下拉列表,相同的范例不适用于编辑 _form,因为我必须根据当前工厂和 Worker 的状态预先填充下拉列表。
任何帮助是极大的赞赏。
编辑:工厂下拉列表由 ajax 查询填充,该查询将选定状态传递给控制器以找出处于该状态的工厂。
$(document).ready(function(){
$('.new-contact-select-state select').change(function() {
var selected_state = $(this).val();
$.ajax({
type: 'POST',
url: '/factories/get_state_factories.json',
data: 'state='+selected_state,
success: function(msg){
if(msg == 0) {
//Query returned empty.
} else {
//Query Has values.
var $el = $('.select-state-firm select');
$el.empty(); // remove old options
$.each(msg, function(key, value) {
var firmname = value.firm_name;
var firm_id = value.id;
$el.append($("<option></option>").attr("value", firm_id).text(firmname));
});
在我尚未准备好的控制器中,下拉菜单将由这样的查询填充。
@state_factories = Factory.includes(:address).where(:addresses => {:state => state})
我是一个 Ruby 菜鸟,所以这一切都不会立即奏效,我只是想调和创建视图和编辑视图之间下拉列表的数据填充差异。我可能最终只创建了两个_forms。