景点模型属于目的地。
我正在尝试创建一个新的吸引力(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>
如何使用适当的目标将吸引力保存到数据库?在此先感谢!!
答案 0 :(得分:0)
我没有使用f.collection_select()
所以不确定在params中调用它是什么,但我们假设以下代码是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_many
和belongs_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