使用javascript定位f.select rails形成帮助器

时间:2015-05-06 07:53:07

标签: 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"

导致以下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>

f.select的id为“level-AS”,我已设法使用

进行定位
$('#level-AS').select()

这给了我Object { context: HTMLDocument → new, selector: "#level-AS" }但我想要的是它返回已经选择的实际值,即“简单”或“硬”。

我也试过

$('#level-AS').select().val()

我也试过

$('#level-AS').val()

但这会返回undefined ....

3 个答案:

答案 0 :(得分:4)

你应该这样做:

$('#level-AS').val()

或者根据你的html:

$('#test_level').val()

Sidenote,您可以这样做,而不是按ID定位:

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

答案 1 :(得分:1)

我认为您的问题是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"}

答案 2 :(得分:0)

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

$('#level-AS').val()