申请的这一部分与 RFP 投标的分级过程有关。
基本上一个类别(例如:成本、公司简介等等)
有许多 TestCriteria。(例如:价格比较,每日价格的竞争力......)
一个TestCriterium 可以有三个GradingScores {失败、满足和超过}(带有#s 和descr)
将它们连接在一起,Grade 与我们分配 GradingScale 的 TestCriteria 相关联。
我想“继承”拥有的类别。
在进入一个新的年级时,我已经存储了 category_id,可以说是它的第二个祖父母。
在返回 EDIT 时的成绩表中,
我需要一个类别下拉列表,选择的默认值为@grade.category_id 这有两个级别。
简单案例如下图所示,再看下图。
我最近的尝试包括:
在年级的控制器中
@categories = Category.where(:id => @grade.category_id)
并以_form
<% f.select :category_id, options_from_collection_for_select(@categories.sort_by
{ |cats| cats.category_name}, "id", "category_name",
:selected => @grade.category_id ) %>
我还尝试了一个简单的 Category.find() w/_form 中的参数。
如果我能在这方面得到帮助,我可以在其他事情上大有帮助。
== 现在是棘手的版本 ==
这都是我真正需要的初步准备。
我正在使用 jQuery ajax 脚本来执行 Category & TestCriterium & Grade 的初始 NEW 条目。
类别限制了适当的测试列表,
而测试限制了等级选项的适当列表。
这是我用来获取这一系列字段的成绩表格:
<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>
和阿贾克斯:
$ ->
$('#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
我做了一些剪切和粘贴,但上面的代码有效。
在我学习了如何对下拉列表进行简单的预加载之后,(这个 Q 的顶部)
你如何建议我如果/那么我的方式来使这个在 EDIT 上工作而不是在 NEW 上工作?
谢谢!