0

我有 2 个关联模型(项目和城市 - 我已经填充了城市)和一个表单,用户可以在其中输入他们在城市中注意到的事物。他们现在可以输入那个东西的名称和城市的 ID。但是,显然我想让他们输入城市的名称并获取该名称的 id,因为他的城市存在于我的数据库中。

我能做些什么来实现这一目标并获得 id?

这是我的模型

class City < ActiveRecord::Base
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :city
end

以及schema.rb中的引用

add_index "items", ["city_id"], name: "index_items_on_city_id", using: :btree

形式:

<%= form_for :item, url: items_path do |f| %>
  <%= f.text_field :name %> 
  <%= f.text_field :city_id %>
<% end %>

物品控制器:

def create
    @item = Item.new(params[:item].permit(:name, :city_id))
end

非常感谢!

4

2 回答 2

0

使用@Nikita Singhs 关于下拉菜单的建议修复了这个问题,现在它可以工作了。这是我的表单的外观:

<%= form_for :item, url: items_path do |f| %>
  <%= f.text_field :name %> 
  <%= f.collection_select :city_id, City.order(:name),:id, :name, include_blank: true %>
<% end %>

感谢您抽出宝贵时间回复!

于 2013-10-18T09:26:14.517 回答
0

您已经正确设置了关联,但是您需要创建一个与城市相关联的新项目,所以我认为最好在表单中删除城市的文本字段并且您需要在其中编写 City.items.create(params)你的控制器。这将照顾你的协会

于 2013-10-17T10:54:24.020 回答