このように多対1の関係N:1を作成しました
class Score {
Double value
Criteria criteria
static belongTo = [criterias: Criteria]
}
class Criteria {
String name
}
g:select
だから私の問題は、特定の基準名のスコアをデータベースに保存するために使用したいということです。私はこのフォームを持っています
<g:form controller="audition" action="assignScore">
<label for="vocal" class="control-label">vocal</label>
<div class="controls">
<g:select from="${['0','10','20','30','40','50','60','70','80','90','100']}" name="vocal" value="score" noSelection="['':'-choose Score please-']"/>
<span class="help-inline">${hasErrors(bean: contestantInstance, field: 'vocal', 'error')}</span>
</div>
<label for="stage" class="control-label">stage</label>
<div class="controls">
<g:select from="${['0','10','20','30','40','50','60','70','80','90','100']}" name="stage" value="score" noSelection="['':'-choose Score please-']"/>
<span class="help-inline">${hasErrors(bean: contestantInstance, field: 'stage', 'error')}</span>
</div>
<div class="form-actions">
<g:submitButton name="save" class="btn btn-primary" value="save" />
<button class="btn" type="reset">Cancel</button>
</div>
</g:form>
そしてコントローラのアクション
def assignScore = {
//find a criteria name
def criteriaInstance = Criteria.findByNameLike(params.vocal) ?: new Criteria(name: "vocal").save(flush: true)
if (params.vocal == "vocal"){
def score = new Score()
score.properties=params.vocal
criteriaInstance.addToScores(score)
criteriaInstance.save(flush: true)
}
def criteriaInstanceStage = Criteria.findByNameLike(params.stage) ?: new Criteria(name: "stage").save(flush: true)
if (params.stage == "stage"){
def score = new Score()
score.properties=params.stage
criteriaInstanceStage.addToScores(score)
criteriaInstanceStage.save(flush: true)
}
}
問題は、特定の基準に関連付けられたスコアを保存できないことです