0

所以我是 ROR 的初学者,就像我知道一个月一样(学校作业,我们没有得到诅咒,我们需要使用“谷歌”)

所以我想要一个包含我所有城市列表的下拉框。然后,如果我选择一个城市,我需要将 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 %>

我真的不知道我做错了什么,除了我有一种奇怪的感觉,我实际上并没有发出保存它的命令。

非常感谢罗宾的帮助

4

1 回答 1

0

我注意到这里有几件事是错误的。

1)将城市数组的创建放入您的控制器中,而不是您的视图中:

def edit
  @something = Something.find(params[:id])
  @cities_array = ... whatever ...
end

2)创建你的city_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 %>

我希望这可以为您解决问题。

于 2012-05-26T21:30:35.630 回答