Ruby on rails 轨道:表格';s f.选择不将grand-U返回到默认值

Ruby on rails 轨道:表格';s f.选择不将grand-U返回到默认值,ruby-on-rails,select,belongs-to,Ruby On Rails,Select,Belongs To,申请的这一部分与RFP投标的评级过程有关 基本上是一个类别(例如:成本、公司简介等) 有许多测试标准。(例如:价格比较、日费率竞争力…) 一个测试标准可以有三个评分{失败、满足和超过}(带有#s和descr) 将所有这些联系在一起,一个等级与一个测试标准相关联,我们为该标准分配了一个分级比例。 我想“结转”所属类别 在进入一个新年级时,我储存了category_id,可以说是它的第二位祖父母 在返回编辑时的成绩表中 我需要一个类别下拉列表,所选默认值为@grade.Category\u id

申请的这一部分与RFP投标的评级过程有关

基本上是一个类别(例如:成本、公司简介等)
有许多测试标准。(例如:价格比较、日费率竞争力…)

一个测试标准可以有三个评分{失败、满足和超过}(带有#s和descr)

将所有这些联系在一起,一个等级与一个测试标准相关联,我们为该标准分配了一个分级比例。
我想“结转”所属类别


在进入一个新年级时,我储存了category_id,可以说是它的第二位祖父母

在返回编辑时的成绩表中

我需要一个类别下拉列表,所选默认值为@grade.Category\u id 这有两个层次。
下面是一个简单的例子,如下所示


我最近的尝试包括:

在年级控制器中

  @categories = Category.where(:id => @grade.category_id)
并且以"u"的形式,

<% f.select :category_id, options_from_collection_for_select(@categories.sort_by
{ |cats| cats.category_name}, "id", "category_name",
:selected => @grade.category_id ) %>
@grade.category\u id)%%>
我还尝试了一个简单的Category.find()方法,其中包含参数。\u形式。
如果我能在这方面得到帮助,我可以在其他事情上走很长的路

==现在是棘手的版本==

这些都是我真正需要的初步准备

我正在使用jqueryajax脚本来完成Category&TestCriterium&Grade的初始新条目

类别限制了适当的测试列表,
测试限制了适当的等级选项列表

这是我用来获取这一系列字段的分数表:

<div class="field">
<%= label_tag 'Evaluation Category' %><br/>
  <div id="grade_picker_div" >
        <%= collection_select( :category, :category_id, Category.find(:all, :order => "id"),
              :id, :category_name,{:include_blank => true} ) %><br/>
      <div id="tests_div"></div><br/>
      <div id="grades_div"></div><br/>
      </div>
</div>


“身份证”), :id,:category_name,{:include_blank=>true})%>


还有ajax:

$ ->  
$('#grade_picker_div #category_category_id').change ->
#selected = $(this).attr 'value'
selected = $(':selected', this)[0].value
$.ajax '/categories/' + selected,
  type: 'get'
  dataType: 'json'
  error:  (jqXHR, textStatus, errorThrown) ->
     alert 'stop' + textStatus
  success:  (data, textStatus, errorThrown) -> 
    select_html = '<br><b>Test Criteria</b><br/> <select id="grade_test_criterium_id" name="grade[test_criterium_id]"><option></option>'
    for test_criterium in data.test_criteria
      select_html += '<option value="' + test_criterium.id + '">' + test_criterium.criteria + '</option>'  
    select_html += '</select>'
    $('#grade_picker_div #test_criteria_div').html(select_html)
    $('#grade_picker_div #grading_scales_div').html('')
return false 

$(document).on 'change', '#grade_picker_div #test_criteria_div', ->
selected = $(':selected', this)[0].value
#alert selected
$.ajax '/test_criteria/' + selected,
  type: 'get'
  dataType: 'json'
  error:  (jqXHR, textStatus, errorThrown) ->
    #alert 'stop' textStatus
  success:  (data, textStatus, errorThrown) -> 
    select_html = '<b>Grade</b><br/> <select id="grade_grading_scale_id" name="grade[grading_scale_id]"><option></option>'
    for grading_scale in data.grading_scales
      select_html += '<option value="' + grading_scale.id + '">' + grading_scale.name + " : " + grading_scale.description + '</option>'  
    select_html += '</select>'
    $('#grade_picker_div #grading_scales_div').html(select_html)
return false 
$->
$(“#等级#挑选者(部门#类别)类别(id)”)。更改->
#所选=$(此).attr“值”
选定项=$(':selected',此)[0]。值
$.ajax'/categories/'+已选定,
键入:“获取”
数据类型:“json”
错误:(jqXHR,textStatus,errorshown)->
警报“停止”+文本状态
成功:(数据、文本状态、错误抛出)->
选择“html=”
测试标准
” 用于数据中的测试标准。测试标准 选择\u html+=''+测试\u criteriam.criteria+'' 选择_html+='' $(“#等级"选取者"分区#测试"标准"分区“).html(选择"html) $('grade#picker_div#grading_scales_div')。html('') 返回错误 $(文档)。关于“更改”,请参见“#等级"选取者"分区#测试"标准"分区”——> 选定项=$(':selected',此)[0]。值 #所选警报 $.ajax'/test_criteria/'+已选定, 键入:“获取” 数据类型:“json” 错误:(jqXHR,textStatus,errorshown)-> #警报“停止”文本状态 成功:(数据、文本状态、错误抛出)-> 选择_html='Grade
' 用于数据中的放坡比例。放坡比例 选择“+html+=”+“放坡”\u scale.name+”:“+grading\u scale.description+” 选择_html+='' $(“#坡度"选取者"分区#坡度"刻度"分区“).html(选择"html) 返回错误
我已经做了一些剪切和粘贴,但上面的代码是有效的

在我学习了如何进行下拉列表的简单预加载后,(此Q的顶部)
你如何建议我,如果/然后我的方式,使这项工作的编辑与什么工作在这里的新


谢谢

您使用的是
select
,因此不应将
options\u from\u collection\u用于为选项列表创建html字符串的\u select
<代码>选择为您执行此操作。尝试将其更改为
collection\u select

<%= f.collection_select :category_id, @categories.sort_by(&:category_name), :id, :category_name, { selected: @grade.category_id } %>

如果
f.object
等于
@grade
,则无需通过所选的
选项