0
這是_form.html.erb中的simple_form代碼。如何在變量中傳遞數組:for rails for form?
<%= f.input :start_time, :label => "Start Time:", :collection => @time_slot %>
@time_slot是在控制器中定義的變量。它是一個陣列,如下所示:
@time_slot = ['00:30 AM','01:00 AM','01:30 AM','02:00 AM','02:30 AM','03:00 AM' ,'03:30 AM','04:00 AM','04:30 AM']
問題是呈現的視圖沒有列出預定義時間段的下拉菜單。相反,它只顯示一個文本框。
如何顯示下拉時間段而不是文本框?謝謝。
:type =>:select沒有工作。試過:as =>:選擇並不適用。我可以將@time_slot移動到視圖中,並將其定義爲:collection => [....]。然而,視圖代碼看起來笨重和醜陋。這就是爲什麼我想在控制器中定義它並在視圖中重新使用它的原因。不管怎麼說,還是要謝謝你。 – user938363 2011-12-23 01:17:57
問題是@time_slot必須在控制器中的方法中定義,例如new,edit,以便傳遞到視圖中。在控制器頂部定義的值沒有被傳遞到視圖中。是否有意義? – user938363 2011-12-23 01:53:31
問題是@time_slot的值未傳遞到視圖中。我所做的是在控制器中定義一個set_time_slot方法,以返回time_slot數組,並將其放入helper_method以使其可用於視圖。也可以放在before_filter中,在控制器中的其他任何東西之前運行set_time_slot。這裏是一個帖子:http://railsforum.com/viewtopic.php?id=21354 – user938363 2011-12-23 02:17:14