アプリケーションのこの部分は、RFPの入札の評価プロセスと関係があります。
基本的に、カテゴリ(例:コスト、会社概要など)
には多くのTestCriteriaがあります。(例:価格比較、日次レートの競争力...)
TestCriteriumは、3つのGradingScores {fail、meet、exceed}(#sとdescrを使用)を持つことができます
すべてを接続すると、GradeはGradingScaleを割り当てるTestCriteriaに関連付けられます。
所有しているカテゴリーを「繰り越し」たいのですが。
新しいグレードに入ると、いわば2番目の祖父母であるcategory_idを保存しました。
EDITに戻ったときの成績の_formで、
選択したデフォルトが@grade.category_idであるCategoryドロップダウンが必要です。これには2つのレベルがあります。
ここに示すような単純なケース、そして以下を参照してください。
私の最近の試みは次のとおりです。
グレードのコントローラーで
@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 ) %>
また、_formにパラメーターを含む単純なCategory.find()を試しました。
私がこれで助けを得ることができれば、私は他の事柄で長い道のりを行くことができます。
==今トリッキーなバージョン==
これはすべて、私が本当に必要としているものの予備的なものです。
私はjQueryajaxスクリプトを使用して、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>
そして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
いくつかの切り取りと貼り付けを行いましたが、上記のコードは機能します。
ドロップダウンの単純なプリロードを実行する方法を学習した後(このQの上部)
、EDITでこれを機能させる方法とNEWで機能する方法をどのように提案しますか?
ありがとう!