0

Attraction 模型属于 Destination。

我正在尝试创建一个新的景点(text_field :name),但也将它链接到一个已经创建的目的地。这些目的地在带有此 collection_select 标记的下拉菜单中呈现。通过单击提交,我希望使用 Destinations 外键创建吸引力并将其保存在 activerecord 数据库中。

f.collection_select(:attraction, :destination_id, Destination.all, :id, :name) %>

整个区块现在看起来像这样:

<h1>New attraction</h1>

选择城市

<%= f.collection_select(:attraction, :destination_id, Destination.all, :id, :name) %>   

<div class ="field">
  <%= f.label :name %>
  <%= f.text_field :name %>
</div>

<div class="actions">
  <%= f.submit %>
</div>

如何使用适当的目的地将景点保存到数据库中?提前致谢!!

4

1 回答 1

0

我没有使用f.collection_select(),所以不确定它在参数中被称为什么,但让我们假设下面的代码它是params[:attraction][:destination_id]. 您可以将创建操作更改为:

def create
  @destination = Destination.find(params[:attraction][:destination_id])
  @attraction = @destination.attractions.build(params[:attraction])
  if @attraction.save
    ...
  else
    ...
  end
end

假设您已经创建了一个has_manyandbelongs_to关联。

如果遇到批量分配错误,请将第一行更改为:

@destination = Destination.find(params[:attraction].delete(:destination_id))
# this will return the deleted value, and in the next line of code
# you'll have the rest of the params still available
于 2013-04-17T02:23:36.427 回答