Я создаю форму в Rails (версия 4.2.5), чтобы собирать основную информацию о магазинах, и я хотел бы иметь форму отправки данных в две отдельные модели - один из которых называется Store, который собирает информацию о магазине, а один называется адресом, который просто содержит информацию о адресе. Я видел этот вопрос, который плавает вокруг Stack и в другом месте, но я довольно новичок в Rails и могу использовать немного более пошаговые инструкции. (Кроме того, я знаю о Race geocoder gem, но не хочу использовать его в этом проекте, несмотря на то, что я собираю адрес и информацию lat/long)Rails - одна форма для двух моделей
Для начала, вот мои магазины и Адресные модели ...
class Store < ActiveRecord::Base
belongs_to :user
belongs_to :store_type
has_one :address
end
class Address < ActiveRecord::Base
belongs_to :store
end
и мой StoresController ...
class StoresController < ApplicationController
def new
@store = Store.new
@storeType = StoreType.all
end
def create
@store = Store.new(store_params)
@store.user = current_user
if @store.save
flash[:notice] = "New store created"
redirect_to root_path
else
#ERROR STUFF
end
end
private
def store_params
params.require(:store).permit(:user_id, :store_type_id, :latitude, :longitude, :name, :notes)
end
end
Наконец, форма для создания нового магазина (не включая адрес) ...
<%= form_for @store do |f| %>
<%= f.hidden_field :latitude, :id => "latitude_field" %>
<%= f.hidden_field :longitude, :id => "longitude_field" %>
<div class="field">
<%= f.label :store_type_id %>
<%= f.select :store_type_id, @storeType.map{ |type| [type.store_type.capitalize, type.id] } %>
</div>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :notes %>
<%= f.text_field :notes %>
</div>
<div class="actions">
<%= f.submit :"Submit" %>
</div>
<% end %>
Таким образом, готовая форма передает вышеуказанные поля в модель магазина, а также включает поля для улицы, города, штата и zip, которые являются полями, которые будут переданы модели Address.
В целом, что лучше всего подходит для этого?
И в качестве последующего вопроса у моей модели Address есть столбец для store_id - будет ли этот столбец автоматически заполняться идентификатором для хранилища, поскольку он создается, если модели Store и Address заполняются из того же форме? Или я выхожу из своей лиги здесь?
спасибо.
Это потрясающе, спасибо. Это очень четкое объяснение, и я понимаю, как работают части. – skwidbreth
Спасибо, человек, пока он работает - вот и все, что считается :) –