Ruby on rails下拉框初学者lvl

时间:2012-05-26 20:26:16

标签: ruby-on-rails

所以我是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 %>

我真的不知道我做错了什么,除非我有一种非常的感觉,我实际上没有给出命令来保存它。

非常感谢帮助 诚挚 罗宾

1 个答案:

答案 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 %>

我为你解决了这个问题。