0

这是我的问题。假设我的域由两个模型组成,工厂和工人。现在,当用户在 _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。

4

1 回答 1

1

我知道问题是在创建新工作人员时呈现工作人员表单时出现错误,因为新工作人员没有可以根据该状态预先填充下拉列表的状态。

如果这是问题所在,那么您可以使用它@worker.new_record?来测试是否@worker是新记录,如果是,那么您可以呈现工厂选择框,除了告诉用户首先选择一个状态的提示之外没有任何选项。

于 2012-12-27T10:46:37.263 回答