这是我的问题。假设我的域名包含两个模型,工厂和工人。现在,当用户在_form视图中创建Worker时,他们必须选择Factory。为此,提供了基于工作者状态的工厂列表,并且只要工作人员的状态发生变化,就会通过JS更改下拉列表的内容。这就像一个魅力。
但是,在编辑用户时,我似乎陷入了填充和自动选择工人工厂的可接受方式。对于编辑视图,似乎指定了options_for_select的select标记是要走的路。不幸的是,这在添加新Worker时会破坏我的_form视图,因为它们没有可以填充集合的状态。
TL; DR我可以使用JS在新的_form视图中填充下拉列表,同样的范例不能与edit _form一起使用,因为我必须根据当前Factory和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 noob,所以这一切都不会起作用,我只是想调和创建视图和编辑视图之间下拉列表中数据填充的差异。我最终可能只创建两个_forms。
答案 0 :(得分:1)
我理解问题是,在创建新工作程序时呈现工作表单时会出现错误,因为新工作程序没有可以预先填充下拉列表的状态。
如果这是问题,那么您可以使用@worker.new_record?
来测试@worker
是否是新记录,如果是,那么您可以渲染工厂选择框,除了提示告诉我没有选项用户首先选择一个州。