所以我是ROR的初学者,就像我知道它一个月(学校作业,我们没有得到一个我们需要使用'google'的诅咒)
所以我想要一个包含所有城市列表的下拉框。然后,如果我选择一个城市,我需要将city_id与日期一起保存在我的数据库中。到目前为止我的代码似乎工作,除非我点击保存它说城市是空的(因为失败,它不能为空)
这是我的代码
<div class="field">
<%= f.label :stad_id %><br />
<% cities_array = Stad.all.map { |stad| [stad.naam, stad.land] } %>
<%= select_tag(Stad, options_for_select(cities_array)) %>
</div>
<div class="field">
<%= f.label :datum %><br />
<% datum = Time.now.to_s(:db) %>
<%= f.text_field :datum, :value => datum.inspect, :readonly => true %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我真的不知道我做错了什么,除非我有一种非常的感觉,我实际上没有给出命令来保存它。
非常感谢帮助 诚挚 罗宾答案 0 :(得分:0)
我注意到有些事情是错误的。
1)将cities_array的创建放入您的控制器中,而不是在您的视图中:
def edit
@something = Something.find(params[:id])
@cities_array = ... whatever ...
end
2)创建cities_array时,您需要将城市的ID指定为第二个参数,如下所示:
@cities_array = Stad.all.map { |stad| [stad.naam, stad.id] }
3)select_tag调用不适用于Stad,它适用于您尝试保存的模型。例如,您的表单可能如下所示:
<%= form_for @something %>
<%= f.label :city %>
<%= f.select :city_id, @cities_array %>
# or!
<%= select :something, :city_id, @cities_array %>
<% end %>
我为你解决了这个问题。