使用javascript以f.select rails表单帮助程序为目标

使用javascript以f.select rails表单帮助程序为目标,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我试图在rails应用程序中检索f.select表单帮助程序的值 f.select的代码为HAML: = f.select :level, [["L1 - Super easy", 1], ["L2 - Warm-up", 2], ["L3 - Easy exam questions", 3], ["L4 - Moderate exam questions", 4], ["L5 - Difficult exam questions", 5]], id: "level-AS" 这将生成以下htm

我试图在rails应用程序中检索f.select表单帮助程序的值

f.select的代码为HAML:

= f.select :level, [["L1 - Super easy", 1], ["L2 - Warm-up", 2], ["L3 - Easy exam questions", 3], ["L4 - Moderate exam questions", 4], ["L5 - Difficult exam questions", 5]], id: "level-AS"
这将生成以下html:

<select id="test_level" name="test[level]">

    <option value="1" selected="selected">L1 - Super easy</option>
    <option value="2">L2 - Warm-up</option>
    <option value="3">L3 - Easy exam questions</option>
    <option value="4">L4 - Moderate exam questions</option>
    <option value="5">L5 - Difficult exam questions</option>

</select>
这给了我对象{context:HTMLDocument→ new,selector:level AS}但我希望它返回已选择的实际值,即Easy或Hard

我也试过了

$('#level-AS').select().val()
我也试过了

$('#level-AS').val()
但这会返回未定义的…

您只需执行以下操作:

$('#level-AS').val()
或者根据您的html:

$('#test_level').val()
旁注,您可以执行以下操作,而不是通过id来确定目标:

$('select[name="test[level]"]').val()

您可以调用val方法来获取值


$'level-AS'.val我认为您的问题是f.select中的ID丢失了。我认为这是由于rails如何将参数分解成不同的部分。试试这个:

= f.select :level, [["L1 - Super easy", 1], ["L2 - Warm-up", 2], ["L3 - Easy exam questions", 3], ["L4 - Moderate exam questions", 4], ["L5 - Difficult exam questions", 5]], {}, {id: "level-AS"}

这给了我未定义的目标…我已经包含了我试图针对的表单帮助程序的代码…这仍然给了我未定义的目标…我已经编辑了它以包含我试图针对的表单帮助程序的代码,如果您这样做会怎么样:$'level-A2'。val?似乎你有一个输入错误,很抱歉,那是从另一个页面…我现在已经更正了编辑好了,js检索值的方法是我们建议你的,不能告诉更多。。。生成的html是什么?我知道,这也是为什么我如此困惑的原因…我再次编辑它以包含html javascript工作的生成html的id为test_level,而不是level。选择正确的元素后,$.val将为您提供当前选择的值。替换您想要获取的元素的id。谢谢,我无法理解为什么我想要的id没有正确显示在html中…文档非常不清楚,但是f.select的参数是字段,要在select中使用的选项,select助手的特殊选项的散列,一般其他选项的散列如果不将最后两个用花括号括起来,它会认为所有传递的选项都是第三个参数的一部分。这是一个例子,如果你不使用ruby的可选大括号,它会把你搞糊涂。
= f.select :level, [["L1 - Super easy", 1], ["L2 - Warm-up", 2], ["L3 - Easy exam questions", 3], ["L4 - Moderate exam questions", 4], ["L5 - Difficult exam questions", 5]], {}, {id: "level-AS"}