如果rails视图中的语句基于刺激控制器返回的值



我的视图中有一个范围滑块,根据我的刺激控制器返回的滑块的输出值,我试图执行if&else语句,其中我希望显示基于值的不同选项。

例如,如果range-slider_value=<5然后我想为plan.find_by(id:1(显示plan.title、plan.description和plan.monthly_price,如果小于5,我想为plan.find_bi(id:2(显示相同的内容。然后我希望能够签出所选的计划。

我的观点:

<div class="range-slider" data-controller="range-slider">
<input type="range"
name="customRange"
class="range-slider__range"
data-target="range-slider.range"
data-action="input->range-slider#updateValue"
value="6"
min="0"
max="10"
step="0.5">
<output class="range-slider__value" data-target="range-slider.value">
</output>
</div>

我的刺激控制器:

export default class extends Controller {
static get targets() {
return ['range', 'value', 'rangeFrom', 'rangeTo', 'valueFrom', 'valueTo']
}

connect() {
if (this.hasValueTarget)     { this.valueTarget.innerHTML = this.rangeTarget.value }
if (this.hasValueToTarget)   { this.valueToTarget.innerHTML = this.rangeToTarget.value }
if (this.hasValueFromTarget) { this.valueFromTarget.innerHTML = this.rangeFromTarget.value }
}

updateValue(evt) {
this.valueTarget.innerHTML = evt.currentTarget.value;
}

updateFromValue() {
let fromValue = this.rangeFromTarget.value
let toValue = this.rangeToTarget.value

if (fromValue >= toValue) {
this.rangeToTarget.value = fromValue
this.valueToTarget.innerHTML = fromValue
}

this.valueFromTarget.innerHTML = fromValue
}

updateToValue() {
let fromValue = this.rangeFromTarget.value
let toValue = this.rangeToTarget.value

if (toValue <= fromValue) {
this.rangeFromTarget.value = toValue
this.valueFromTarget.innerHTML = toValue
}
this.valueToTarget.innerHTML = toValue
}
}

不确定这是否相关,但我看到了这段代码,发现if语句实际上并没有按要求工作。

我最终做了什么

updateFromValue(event) {
let new_value = parseInt(event.currentTarget.value)
let to_value = parseInt(this.rangeToTarget.value)

我正在使用当前事件来获取此函数中的最新值。我还必须解析if语句的值,因为默认情况下,这些值是字符串。

我还通过static targets = ['rangeFrom', 'rangeTo', 'valueFrom', 'valueTo']使用了最新的StimulusJs目标设置

最新更新